@ynput/ayon-frontend-shared 0.2.34 → 0.2.35
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 -23
- package/dist/DetailsPanel.es.js.map +1 -1
- package/dist/Feed.cjs.js +1 -1
- package/dist/Feed.es.js +20 -19
- package/dist/_virtual/attach-listener.cjs.js +2 -0
- package/dist/_virtual/attach-listener.cjs.js.map +1 -0
- package/dist/_virtual/attach-listener.es.js +5 -0
- package/dist/_virtual/attach-listener.es.js.map +1 -0
- package/dist/_virtual/attach-shared-listeners.cjs.js +2 -0
- package/dist/_virtual/attach-shared-listeners.cjs.js.map +1 -0
- package/dist/_virtual/attach-shared-listeners.es.js +5 -0
- package/dist/_virtual/attach-shared-listeners.es.js.map +1 -0
- package/dist/_virtual/constants.cjs.js +2 -0
- package/dist/_virtual/constants.cjs.js.map +1 -0
- package/dist/_virtual/constants.es.js +5 -0
- package/dist/_virtual/constants.es.js.map +1 -0
- package/dist/_virtual/create-or-join.cjs.js +2 -0
- package/dist/_virtual/create-or-join.cjs.js.map +1 -0
- package/dist/_virtual/create-or-join.es.js +5 -0
- package/dist/_virtual/create-or-join.es.js.map +1 -0
- package/dist/_virtual/get-url.cjs.js +2 -0
- package/dist/_virtual/get-url.cjs.js.map +1 -0
- package/dist/_virtual/get-url.es.js +5 -0
- package/dist/_virtual/get-url.es.js.map +1 -0
- package/dist/_virtual/globals.cjs.js +2 -0
- package/dist/_virtual/globals.cjs.js.map +1 -0
- package/dist/_virtual/globals.es.js +5 -0
- package/dist/_virtual/globals.es.js.map +1 -0
- package/dist/_virtual/heartbeat.cjs.js +2 -0
- package/dist/_virtual/heartbeat.cjs.js.map +1 -0
- package/dist/_virtual/heartbeat.es.js +5 -0
- package/dist/_virtual/heartbeat.es.js.map +1 -0
- package/dist/_virtual/index.cjs.js +1 -1
- package/dist/_virtual/index.cjs10.js +1 -1
- package/dist/_virtual/index.cjs11.js +2 -0
- package/dist/_virtual/index.cjs11.js.map +1 -0
- package/dist/_virtual/index.cjs12.js +2 -0
- package/dist/_virtual/index.cjs12.js.map +1 -0
- package/dist/_virtual/index.cjs2.js +1 -1
- package/dist/_virtual/index.cjs3.js +1 -1
- package/dist/_virtual/index.cjs4.js +1 -1
- package/dist/_virtual/index.cjs6.js +1 -1
- package/dist/_virtual/index.cjs8.js +1 -1
- package/dist/_virtual/index.cjs9.js +1 -1
- package/dist/_virtual/index.es.js +5 -4
- package/dist/_virtual/index.es10.js +5 -5
- package/dist/_virtual/index.es11.js +8 -0
- package/dist/_virtual/index.es11.js.map +1 -0
- package/dist/_virtual/index.es12.js +8 -0
- package/dist/_virtual/index.es12.js.map +1 -0
- package/dist/_virtual/index.es2.js +2 -2
- package/dist/_virtual/index.es3.js +5 -2
- package/dist/_virtual/index.es3.js.map +1 -1
- package/dist/_virtual/index.es4.js +2 -5
- package/dist/_virtual/index.es4.js.map +1 -1
- package/dist/_virtual/index.es6.js +5 -5
- package/dist/_virtual/index.es8.js +4 -4
- package/dist/_virtual/index.es9.js +2 -5
- package/dist/_virtual/index.es9.js.map +1 -1
- package/dist/_virtual/manage-subscribers.cjs.js +2 -0
- package/dist/_virtual/manage-subscribers.cjs.js.map +1 -0
- package/dist/_virtual/manage-subscribers.es.js +5 -0
- package/dist/_virtual/manage-subscribers.es.js.map +1 -0
- package/dist/_virtual/proxy.cjs.js +2 -0
- package/dist/_virtual/proxy.cjs.js.map +1 -0
- package/dist/_virtual/proxy.es.js +5 -0
- package/dist/_virtual/proxy.es.js.map +1 -0
- package/dist/_virtual/socket-io.cjs.js +2 -0
- package/dist/_virtual/socket-io.cjs.js.map +1 -0
- package/dist/_virtual/socket-io.es.js +5 -0
- package/dist/_virtual/socket-io.es.js.map +1 -0
- package/dist/_virtual/use-event-source.cjs.js +2 -0
- package/dist/_virtual/use-event-source.cjs.js.map +1 -0
- package/dist/_virtual/use-event-source.es.js +5 -0
- package/dist/_virtual/use-event-source.es.js.map +1 -0
- package/dist/_virtual/use-socket-io.cjs.js +2 -0
- package/dist/_virtual/use-socket-io.cjs.js.map +1 -0
- package/dist/_virtual/use-socket-io.es.js +5 -0
- package/dist/_virtual/use-socket-io.es.js.map +1 -0
- package/dist/_virtual/use-websocket.cjs.js +2 -0
- package/dist/_virtual/use-websocket.cjs.js.map +1 -0
- package/dist/_virtual/use-websocket.es.js +5 -0
- package/dist/_virtual/use-websocket.es.js.map +1 -0
- package/dist/_virtual/util.cjs.js +2 -0
- package/dist/_virtual/util.cjs.js.map +1 -0
- package/dist/_virtual/util.es.js +5 -0
- package/dist/_virtual/util.es.js.map +1 -0
- package/dist/api.cjs.js +1 -1
- package/dist/api.es.js +233 -230
- package/dist/api.es.js.map +1 -1
- package/dist/components.cjs.js +1 -1
- package/dist/components.es.js +25 -23
- package/dist/components.es.js.map +1 -1
- package/dist/context.cjs.js +1 -1
- package/dist/context.es.js +17 -13
- package/dist/context.es.js.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +11 -10
- 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/parse-numeric-range/index.cjs.js +1 -1
- package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
- package/dist/node_modules/react-use-websocket/dist/index.cjs.js +2 -0
- package/dist/node_modules/react-use-websocket/dist/index.cjs.js.map +1 -0
- package/dist/node_modules/react-use-websocket/dist/index.es.js +36 -0
- package/dist/node_modules/react-use-websocket/dist/index.es.js.map +1 -0
- package/dist/node_modules/react-use-websocket/dist/lib/attach-listener.cjs.js +2 -0
- package/dist/node_modules/react-use-websocket/dist/lib/attach-listener.cjs.js.map +1 -0
- package/dist/node_modules/react-use-websocket/dist/lib/attach-listener.es.js +79 -0
- package/dist/node_modules/react-use-websocket/dist/lib/attach-listener.es.js.map +1 -0
- package/dist/node_modules/react-use-websocket/dist/lib/attach-shared-listeners.cjs.js +2 -0
- package/dist/node_modules/react-use-websocket/dist/lib/attach-shared-listeners.cjs.js.map +1 -0
- package/dist/node_modules/react-use-websocket/dist/lib/attach-shared-listeners.es.js +72 -0
- package/dist/node_modules/react-use-websocket/dist/lib/attach-shared-listeners.es.js.map +1 -0
- package/dist/node_modules/react-use-websocket/dist/lib/constants.cjs.js +2 -0
- package/dist/node_modules/react-use-websocket/dist/lib/constants.cjs.js.map +1 -0
- package/dist/node_modules/react-use-websocket/dist/lib/constants.es.js +32 -0
- package/dist/node_modules/react-use-websocket/dist/lib/constants.es.js.map +1 -0
- package/dist/node_modules/react-use-websocket/dist/lib/create-or-join.cjs.js +2 -0
- package/dist/node_modules/react-use-websocket/dist/lib/create-or-join.cjs.js.map +1 -0
- package/dist/node_modules/react-use-websocket/dist/lib/create-or-join.es.js +53 -0
- package/dist/node_modules/react-use-websocket/dist/lib/create-or-join.es.js.map +1 -0
- package/dist/node_modules/react-use-websocket/dist/lib/get-url.cjs.js +2 -0
- package/dist/node_modules/react-use-websocket/dist/lib/get-url.cjs.js.map +1 -0
- package/dist/node_modules/react-use-websocket/dist/lib/get-url.es.js +144 -0
- package/dist/node_modules/react-use-websocket/dist/lib/get-url.es.js.map +1 -0
- package/dist/node_modules/react-use-websocket/dist/lib/globals.cjs.js +2 -0
- package/dist/node_modules/react-use-websocket/dist/lib/globals.cjs.js.map +1 -0
- package/dist/node_modules/react-use-websocket/dist/lib/globals.es.js +19 -0
- package/dist/node_modules/react-use-websocket/dist/lib/globals.es.js.map +1 -0
- package/dist/node_modules/react-use-websocket/dist/lib/heartbeat.cjs.js +2 -0
- package/dist/node_modules/react-use-websocket/dist/lib/heartbeat.cjs.js.map +1 -0
- package/dist/node_modules/react-use-websocket/dist/lib/heartbeat.es.js +35 -0
- package/dist/node_modules/react-use-websocket/dist/lib/heartbeat.es.js.map +1 -0
- package/dist/node_modules/react-use-websocket/dist/lib/manage-subscribers.cjs.js +2 -0
- package/dist/node_modules/react-use-websocket/dist/lib/manage-subscribers.cjs.js.map +1 -0
- package/dist/node_modules/react-use-websocket/dist/lib/manage-subscribers.es.js +36 -0
- package/dist/node_modules/react-use-websocket/dist/lib/manage-subscribers.es.js.map +1 -0
- package/dist/node_modules/react-use-websocket/dist/lib/proxy.cjs.js +2 -0
- package/dist/node_modules/react-use-websocket/dist/lib/proxy.cjs.js.map +1 -0
- package/dist/node_modules/react-use-websocket/dist/lib/proxy.es.js +24 -0
- package/dist/node_modules/react-use-websocket/dist/lib/proxy.es.js.map +1 -0
- package/dist/node_modules/react-use-websocket/dist/lib/socket-io.cjs.js +2 -0
- package/dist/node_modules/react-use-websocket/dist/lib/socket-io.cjs.js.map +1 -0
- package/dist/node_modules/react-use-websocket/dist/lib/socket-io.es.js +39 -0
- package/dist/node_modules/react-use-websocket/dist/lib/socket-io.es.js.map +1 -0
- package/dist/node_modules/react-use-websocket/dist/lib/use-event-source.cjs.js +2 -0
- package/dist/node_modules/react-use-websocket/dist/lib/use-event-source.cjs.js.map +1 -0
- package/dist/node_modules/react-use-websocket/dist/lib/use-event-source.es.js +51 -0
- package/dist/node_modules/react-use-websocket/dist/lib/use-event-source.es.js.map +1 -0
- package/dist/node_modules/react-use-websocket/dist/lib/use-socket-io.cjs.js +2 -0
- package/dist/node_modules/react-use-websocket/dist/lib/use-socket-io.cjs.js.map +1 -0
- package/dist/node_modules/react-use-websocket/dist/lib/use-socket-io.es.js +54 -0
- package/dist/node_modules/react-use-websocket/dist/lib/use-socket-io.es.js.map +1 -0
- package/dist/node_modules/react-use-websocket/dist/lib/use-websocket.cjs.js +2 -0
- package/dist/node_modules/react-use-websocket/dist/lib/use-websocket.cjs.js.map +1 -0
- package/dist/node_modules/react-use-websocket/dist/lib/use-websocket.es.js +198 -0
- package/dist/node_modules/react-use-websocket/dist/lib/use-websocket.es.js.map +1 -0
- package/dist/node_modules/react-use-websocket/dist/lib/util.cjs.js +2 -0
- package/dist/node_modules/react-use-websocket/dist/lib/util.cjs.js.map +1 -0
- package/dist/node_modules/react-use-websocket/dist/lib/util.es.js +21 -0
- package/dist/node_modules/react-use-websocket/dist/lib/util.es.js.map +1 -0
- package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js.map +1 -1
- package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
- package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js.map +1 -1
- package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
- package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype-parse/lib/index.cjs.js.map +1 -1
- package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
- package/dist/node_modules/rehype-prism-plus/dist/index.es.cjs.js +1 -1
- package/dist/node_modules/rehype-prism-plus/dist/index.es.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/prop-types/index.cjs.js +1 -1
- package/dist/shared/node_modules/prop-types/index.es.js +1 -1
- package/dist/shared/node_modules/react-is/index.cjs.js +1 -1
- package/dist/shared/node_modules/react-is/index.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js.map +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js.map +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js.map +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
- package/dist/shared/src/api/base/client.cjs.js +1 -1
- package/dist/shared/src/api/base/client.cjs.js.map +1 -1
- package/dist/shared/src/api/base/client.es.js +7 -6
- package/dist/shared/src/api/base/client.es.js.map +1 -1
- package/dist/shared/src/api/queries/activities/getActivities.cjs.js +1 -1
- package/dist/shared/src/api/queries/activities/getActivities.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/activities/getActivities.es.js +71 -60
- package/dist/shared/src/api/queries/activities/getActivities.es.js.map +1 -1
- package/dist/shared/src/api/queries/activities/getCategories.cjs.js +1 -1
- package/dist/shared/src/api/queries/activities/getCategories.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/activities/getCategories.es.js +11 -6
- package/dist/shared/src/api/queries/activities/getCategories.es.js.map +1 -1
- package/dist/shared/src/api/queries/activities/updateActivities.cjs.js +1 -1
- package/dist/shared/src/api/queries/activities/updateActivities.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/activities/updateActivities.es.js +1 -1
- package/dist/shared/src/api/queries/activities/updateActivities.es.js.map +1 -1
- package/dist/shared/src/api/queries/activities/updateReaction.cjs.js +1 -1
- package/dist/shared/src/api/queries/activities/updateReaction.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/activities/updateReaction.es.js +1 -1
- package/dist/shared/src/api/queries/activities/updateReaction.es.js.map +1 -1
- package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js +2 -0
- package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js.map +1 -0
- package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js +144 -0
- package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js.map +1 -0
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +3 -2
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/BorderedSection.cjs.js +4 -4
- package/dist/shared/src/components/DetailsPanelDetails/BorderedSection.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/BorderedSection.es.js +36 -35
- package/dist/shared/src/components/DetailsPanelDetails/BorderedSection.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 +3 -2
- package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +28 -27
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
- package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +1 -1
- package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +3 -2
- package/dist/shared/src/components/EntityPath/SegmentProvider.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 +4 -3
- package/dist/shared/src/components/LinksManager/AddNewLinks.es.js.map +1 -1
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +4 -3
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js +2 -2
- package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js.map +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackButton.es.js +3 -2
- package/dist/shared/src/components/Powerpack/PowerpackButton.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 -3
- package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
- package/dist/shared/src/components/Powerpack/RequiredAddonVersion.cjs.js +9 -0
- package/dist/shared/src/components/Powerpack/RequiredAddonVersion.cjs.js.map +1 -0
- package/dist/shared/src/components/Powerpack/RequiredAddonVersion.es.js +30 -0
- package/dist/shared/src/components/Powerpack/RequiredAddonVersion.es.js.map +1 -0
- 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 -5
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/RowHeightSettings.cjs.js +1 -1
- package/dist/shared/src/components/ProjectTableSettings/RowHeightSettings.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/RowHeightSettings.es.js +4 -3
- package/dist/shared/src/components/ProjectTableSettings/RowHeightSettings.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 +5 -4
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
- package/dist/shared/src/components/QuillListStyles/QuillListStyles.cjs.js +1 -0
- package/dist/shared/src/components/QuillListStyles/QuillListStyles.cjs.js.map +1 -1
- package/dist/shared/src/components/QuillListStyles/QuillListStyles.es.js +1 -0
- package/dist/shared/src/components/QuillListStyles/QuillListStyles.es.js.map +1 -1
- package/dist/shared/src/components/RefreshToast/RefreshToast.cjs.js +2 -0
- package/dist/shared/src/components/RefreshToast/RefreshToast.cjs.js.map +1 -0
- package/dist/shared/src/components/RefreshToast/RefreshToast.es.js +10 -0
- package/dist/shared/src/components/RefreshToast/RefreshToast.es.js.map +1 -0
- package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +2 -2
- package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
- package/dist/shared/src/components/RenameForm/RenameForm.es.js +4 -3
- package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +4 -3
- 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 -4
- 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 -3
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +4 -4
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +3 -2
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.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 -3
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +1 -1
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +6 -5
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +4 -3
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +4 -3
- 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 +3 -2
- package/dist/shared/src/containers/Actions/Actions.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 -3
- 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 -3
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +4 -3
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +5 -4
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +4 -3
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +3 -2
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.es.js +3 -2
- package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/FeedWrapper.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/FeedWrapper.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/FeedWrapper.es.js +3 -2
- package/dist/shared/src/containers/DetailsPanel/FeedWrapper.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 -3
- 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 -3
- 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 -3
- 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 -3
- 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 +3 -2
- package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.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 +4 -3
- package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js +2 -2
- package/dist/shared/src/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.es.js +42 -39
- package/dist/shared/src/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.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 +13 -12
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js +7 -6
- package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.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 +258 -245
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.styled.cjs.js +66 -11
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.styled.es.js +68 -13
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.styled.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js +13 -10
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js +6 -5
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +63 -51
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.es.js +35 -31
- package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.styled.cjs.js +1 -0
- package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.styled.es.js +3 -2
- package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.styled.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +3 -2
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
- package/dist/shared/src/containers/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/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 +73 -72
- 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 +4 -3
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +4 -3
- 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 -3
- 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 -3
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +4 -3
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +6 -5
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +4 -3
- 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 -3
- 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 -3
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +4 -3
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.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 -3
- 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 -3
- 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 -3
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.es.js +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.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 -3
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +15 -14
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +4 -3
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +6 -5
- 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 -3
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.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 -3
- 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 -3
- package/dist/shared/src/containers/SimpleTable/SimpleTable.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/ViewsMenuContainer.cjs.js +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +3 -2
- package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -1
- package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
- package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/context/ViewsContext.es.js +5 -4
- package/dist/shared/src/containers/Views/context/ViewsContext.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 +3 -2
- 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/context/AddonContext.cjs.js.map +1 -1
- package/dist/shared/src/context/AddonContext.es.js.map +1 -1
- package/dist/shared/src/context/AddonProjectContext.cjs.js +1 -1
- package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
- package/dist/shared/src/context/AddonProjectContext.es.js +27 -13
- 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 +5 -4
- package/dist/shared/src/context/DetailsPanelContext.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 +11 -10
- package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
- package/dist/shared/src/context/WebsocketContext.cjs.js +2 -0
- package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -0
- package/dist/shared/src/context/WebsocketContext.es.js +309 -0
- package/dist/shared/src/context/WebsocketContext.es.js.map +1 -0
- 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/src/components/Menu/MenuComponents/Menu.cjs.js +1 -1
- package/dist/src/components/Menu/MenuComponents/Menu.cjs.js.map +1 -1
- package/dist/src/components/Menu/MenuComponents/Menu.es.js +3 -2
- package/dist/src/components/Menu/MenuComponents/Menu.es.js.map +1 -1
- package/dist/src/components/Menu/MenuComponents/MenuItem.cjs.js +1 -1
- package/dist/src/components/Menu/MenuComponents/MenuItem.cjs.js.map +1 -1
- package/dist/src/components/Menu/MenuComponents/MenuItem.es.js +7 -6
- package/dist/src/components/Menu/MenuComponents/MenuItem.es.js.map +1 -1
- package/dist/src/components/Menu/MenuComponents/MenuList.cjs.js +1 -1
- package/dist/src/components/Menu/MenuComponents/MenuList.cjs.js.map +1 -1
- package/dist/src/components/Menu/MenuComponents/MenuList.es.js +11 -10
- package/dist/src/components/Menu/MenuComponents/MenuList.es.js.map +1 -1
- package/dist/types/api/queries/activities/getActivities.d.ts +1 -1
- package/dist/types/api/queries/activities/index.d.ts +0 -1
- package/dist/types/api/queries/activities/util/activityRealtimeHandler.d.ts +40 -0
- package/dist/types/api/queries/index.d.ts +1 -0
- package/dist/types/components/Powerpack/RequiredAddonVersion.d.ts +12 -0
- package/dist/types/components/Powerpack/index.d.ts +1 -1
- package/dist/types/components/RefreshToast/RefreshToast.d.ts +1 -0
- package/dist/types/components/RefreshToast/index.d.ts +1 -0
- package/dist/types/components/index.d.ts +1 -0
- package/dist/types/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.d.ts +5 -0
- package/dist/types/containers/Feed/components/FileUploadCard/FileUploadCard.d.ts +2 -1
- package/dist/types/containers/Feed/components/FilesGrid/FilesGrid.d.ts +6 -2
- package/dist/types/context/AddonContext.d.ts +1 -0
- package/dist/types/context/AddonProjectContext.d.ts +6 -1
- package/dist/types/context/WebsocketContext.d.ts +21 -0
- package/dist/types/context/index.d.ts +1 -0
- package/package.json +1 -1
- package/dist/shared/src/components/Powerpack/RequiredPowerpackVersion.cjs.js +0 -9
- package/dist/shared/src/components/Powerpack/RequiredPowerpackVersion.cjs.js.map +0 -1
- package/dist/shared/src/components/Powerpack/RequiredPowerpackVersion.es.js +0 -25
- package/dist/shared/src/components/Powerpack/RequiredPowerpackVersion.es.js.map +0 -1
- package/dist/types/components/Powerpack/RequiredPowerpackVersion.d.ts +0 -5
|
@@ -11,7 +11,7 @@ import se from "../ReactionContainer/Reactions.es.js";
|
|
|
11
11
|
import ae from "../../hooks/useReferenceTooltip.es.js";
|
|
12
12
|
import ce from "../FilesGrid/FilesGrid.es.js";
|
|
13
13
|
import { getTextRefs as le } from "../CommentInput/quillToMarkdown.es.js";
|
|
14
|
-
import { Comment as
|
|
14
|
+
import { Comment as pe, Body as de, Tools as fe, ToolButton as P, Tip as ue } from "./ActivityComment.styled.es.js";
|
|
15
15
|
import ye from "./CommentWrapper.es.js";
|
|
16
16
|
import { blockquoteTag as ge, codeTag as xe, inputTag as he, aTag as Ce } from "./ActivityMarkdownComponents.es.js";
|
|
17
17
|
import { mapGraphQLReactions as je } from "./mappers.es.js";
|
|
@@ -36,12 +36,13 @@ import "../../../../context/AddonContext.es.js";
|
|
|
36
36
|
import "../../../../context/PowerpackContext.es.js";
|
|
37
37
|
import "../../../../context/MoveEntityContext.es.js";
|
|
38
38
|
import "../../../../context/MenuContext.es.js";
|
|
39
|
+
import "../../../../context/WebsocketContext.es.js";
|
|
39
40
|
import { useBlendedCategoryColor as we } from "../CommentInput/hooks/useBlendedCategoryColor.es.js";
|
|
40
41
|
import { CategoryTag as Ee } from "../ActivityCategorySelect/CategoryTag.es.js";
|
|
41
|
-
const
|
|
42
|
+
const ho = ({
|
|
42
43
|
activity: r = {},
|
|
43
44
|
onCheckChange: H,
|
|
44
|
-
onDelete:
|
|
45
|
+
onDelete: d,
|
|
45
46
|
onUpdate: f,
|
|
46
47
|
projectInfo: Ie,
|
|
47
48
|
editProps: q,
|
|
@@ -56,8 +57,8 @@ const xo = ({
|
|
|
56
57
|
}) => {
|
|
57
58
|
var S;
|
|
58
59
|
const { userName: u, createReaction: O, deleteReaction: Q, editingId: V, setEditingId: y, categories: v, isGuest: g } = ve(), o = N(() => v.find((e) => {
|
|
59
|
-
var
|
|
60
|
-
return e.name === ((
|
|
60
|
+
var p;
|
|
61
|
+
return e.name === ((p = r.activityData) == null ? void 0 : p.category);
|
|
61
62
|
}) || null, [(S = r == null ? void 0 : r.activityData) == null ? void 0 : S.category, v]), s = we(o == null ? void 0 : o.color);
|
|
62
63
|
let {
|
|
63
64
|
body: x,
|
|
@@ -77,11 +78,11 @@ const xo = ({
|
|
|
77
78
|
y(i);
|
|
78
79
|
}, J = () => {
|
|
79
80
|
y(null);
|
|
80
|
-
}, K = async (e,
|
|
81
|
-
await (f == null ? void 0 : f(e,
|
|
81
|
+
}, K = async (e, p, U) => {
|
|
82
|
+
await (f == null ? void 0 : f(e, p, void 0, U)), y(null);
|
|
82
83
|
}, a = V === i, w = _ !== "origin" || M, X = async () => {
|
|
83
84
|
const e = le(x);
|
|
84
|
-
w && j && e.push({ id: j.id, type: j.type }),
|
|
85
|
+
w && j && e.push({ id: j.id, type: j.type }), d && await d(i, k, e);
|
|
85
86
|
}, Y = () => {
|
|
86
87
|
ke({
|
|
87
88
|
title: "Delete comment",
|
|
@@ -116,7 +117,7 @@ const xo = ({
|
|
|
116
117
|
[l]
|
|
117
118
|
);
|
|
118
119
|
return /* @__PURE__ */ t.jsx(t.Fragment, { children: /* @__PURE__ */ t.jsxs(
|
|
119
|
-
|
|
120
|
+
pe,
|
|
120
121
|
{
|
|
121
122
|
className: F("comment", {
|
|
122
123
|
isOwner: b,
|
|
@@ -144,9 +145,9 @@ const xo = ({
|
|
|
144
145
|
children: void 0
|
|
145
146
|
}
|
|
146
147
|
),
|
|
147
|
-
/* @__PURE__ */ t.jsxs(
|
|
148
|
+
/* @__PURE__ */ t.jsxs(de, { className: F("comment-body", { isEditing: a }), children: [
|
|
148
149
|
!R && b ? /* @__PURE__ */ t.jsxs(fe, { className: "tools", children: [
|
|
149
|
-
|
|
150
|
+
d && /* @__PURE__ */ t.jsx(
|
|
150
151
|
P,
|
|
151
152
|
{
|
|
152
153
|
icon: "delete",
|
|
@@ -254,6 +255,6 @@ const xo = ({
|
|
|
254
255
|
) });
|
|
255
256
|
};
|
|
256
257
|
export {
|
|
257
|
-
|
|
258
|
+
ho as default
|
|
258
259
|
};
|
|
259
260
|
//# sourceMappingURL=ActivityComment.es.js.map
|
package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActivityComment.es.js","sources":["../../../../../../../src/containers/Feed/components/ActivityComment/ActivityComment.tsx"],"sourcesContent":["import clsx from 'clsx'\nimport { useCallback, useMemo } from 'react'\nimport ReactMarkdown from 'react-markdown'\nimport emoji from 'remark-emoji'\nimport remarkGfm from 'remark-gfm'\nimport remarkDirective from 'remark-directive'\nimport remarkDirectiveRehype from 'remark-directive-rehype'\n\nimport CommentInput from '../CommentInput/CommentInput'\nimport Reactions from '../ReactionContainer/Reactions'\nimport { Reaction } from '../ReactionContainer/types'\nimport useReferenceTooltip from '../../hooks/useReferenceTooltip'\nimport FilesGrid, { FilesGridProps } from '../FilesGrid/FilesGrid'\n\nimport { getTextRefs } from '../CommentInput/quillToMarkdown'\nimport * as Styled from './ActivityComment.styled'\nimport CommentWrapper from './CommentWrapper'\nimport { aTag, blockquoteTag, codeTag, inputTag } from './ActivityMarkdownComponents'\nimport { mapGraphQLReactions } from './mappers'\nimport { Icon } from '@ynput/ayon-react-components'\nimport ActivityStatus from '../ActivityStatus/ActivityStatus'\nimport { useFeedContext } from '../../context/FeedContext'\nimport { confirmDelete } from '../../../../util'\nimport ActivityHeader, { ActivityHeaderProps } from '../ActivityHeader/ActivityHeader'\nimport type { Status } from '../../../ProjectTreeTable/types/project'\nimport { SavedAnnotationMetadata } from '../../index'\nimport { useDetailsPanelContext } from '@shared/context'\nimport { useBlendedCategoryColor } from '../CommentInput/hooks/useBlendedCategoryColor'\nimport { CategoryTag } from '../ActivityCategorySelect/CategoryTag'\n\ntype Props = {\n activity: any\n onCheckChange?: Function\n onDelete?: (activityId: string, entityId: string, refs: any) => Promise<void>\n onUpdate?: (value: any, files: any, refs?: any, data?: any) => Promise<void>\n projectInfo: any\n editProps?: {\n disabled: boolean\n isLoading: boolean\n }\n projectName: string\n entityType: string\n onReferenceClick?: ActivityHeaderProps['onReferenceClick']\n onFileExpand?: FilesGridProps['onExpand']\n showOrigin?: boolean\n isHighlighted?: boolean\n readOnly?: boolean\n statuses: Status[]\n}\n\nconst ActivityComment = ({\n activity = {},\n onCheckChange,\n onDelete,\n onUpdate,\n projectInfo,\n editProps,\n projectName,\n entityType,\n onReferenceClick,\n onFileExpand,\n showOrigin,\n isHighlighted,\n readOnly,\n statuses = [],\n}: Props) => {\n const { userName, createReaction, deleteReaction, editingId, setEditingId, categories, isGuest } =\n useFeedContext()\n\n const categoryData = useMemo(() => {\n return categories.find((cat) => cat.name === activity.activityData?.category) || null\n }, [activity?.activityData?.category, categories])\n // Compute blended background color for category\n const blendedCategoryColor = useBlendedCategoryColor(categoryData?.color)\n\n let {\n body,\n authorName,\n authorFullName,\n createdAt,\n referenceType,\n entityId,\n activityId,\n author,\n isOwner,\n files = [],\n origin,\n } = activity\n if (!authorName) authorName = author?.name || ''\n if (!authorFullName) authorFullName = author?.fullName || authorName\n\n const { onGoToFrame, setHighlightedActivities } = useDetailsPanelContext()\n\n const handleEditComment = () => {\n setEditingId(activityId)\n }\n\n const handleEditCancel = () => {\n // close the edit comment\n setEditingId(null)\n }\n\n const handleSave = async (value: any, files: any, data?: any) => {\n await onUpdate?.(value, files, undefined, data)\n setEditingId(null)\n }\n\n const isEditing = editingId === activityId\n\n const isRef = referenceType !== 'origin' || showOrigin\n\n const handleDelete = async () => {\n const refs = getTextRefs(body)\n\n // if the comment is a reference, (it's origin is not the entity)\n // we need to delete the reference from the origin as well\n // add it to the refs to delete\n if (isRef && origin) {\n refs.push({ id: origin.id, type: origin.type })\n }\n\n // note: body is used to match other refs to delete\n onDelete && (await onDelete(activityId, entityId, refs))\n }\n\n const deleteConfirmation = () => {\n confirmDelete({\n title: 'Delete comment',\n message: 'Are you sure you want to delete this comment?',\n accept: async () => {\n await handleDelete()\n },\n })\n }\n\n const [, setRefTooltip] = useReferenceTooltip()\n\n const mappedReactions = useMemo(\n () => mapGraphQLReactions(activity.reactions, userName),\n [[...(activity.reactions || [])]],\n )\n\n const reactionChangeHandler = (reaction: Reaction) => {\n if (reaction.isActive) {\n createReaction({\n projectName: projectName,\n // @ts-ignore exposed endpoint doesn't need the username, we still need to pass it for the optimistic update\n userName: userName,\n activityId: activityId,\n createReactionModel: {\n reaction: reaction.type,\n },\n })\n } else {\n deleteReaction({\n projectName: projectName,\n // @ts-ignore exposed endpoint doesn't need the username, we still need to pass it for the optimistic update\n userName: userName,\n activityId: activityId,\n reaction: reaction.type,\n })\n }\n }\n\n const onAnnotationClick = useCallback(\n (file: any) => {\n if (!file.annotation) return\n // annotation frame numbers are 1-based\n onGoToFrame?.((file.annotation as SavedAnnotationMetadata).range[0])\n setHighlightedActivities([activityId])\n },\n [onGoToFrame],\n )\n\n return (\n <>\n <Styled.Comment\n className={clsx('comment', {\n isOwner,\n isEditing,\n isHighlighted,\n category: !!categoryData && !isGuest,\n })}\n id={activityId}\n $categoryPrimary={categoryData?.color}\n $categoryTertiary={blendedCategoryColor.primary}\n $categorySecondary={blendedCategoryColor.secondary}\n >\n <ActivityHeader\n name={authorName}\n fullName={authorFullName}\n date={createdAt}\n isRef={isRef}\n activity={activity}\n // projectInfo={projectInfo}\n projectName={projectName}\n entityType={entityType}\n onReferenceClick={onReferenceClick}\n onReferenceTooltip={setRefTooltip}\n children={undefined}\n />\n <Styled.Body className={clsx('comment-body', { isEditing })}>\n {!readOnly && isOwner ? (\n <Styled.Tools className={'tools'}>\n {onDelete && (\n <Styled.ToolButton\n icon=\"delete\"\n onClick={deleteConfirmation}\n tooltip=\"Delete comment\"\n variant=\"text\"\n />\n )}\n {handleEditComment && (\n <Styled.ToolButton icon=\"edit_square\" onClick={handleEditComment} variant=\"text\" />\n )}\n </Styled.Tools>\n ) : (\n <div className=\"tools\"></div>\n )}\n\n {!isEditing && !isGuest && categoryData && (\n <CategoryTag\n value={categoryData.name}\n color={categoryData.color}\n style={{\n top: -4,\n left: -4,\n }}\n isCompact\n />\n )}\n\n {isEditing ? (\n <CommentInput\n initValue={body}\n initFiles={files}\n initCategory={categoryData?.name}\n isEditing\n onClose={handleEditCancel}\n onSubmit={handleSave}\n isOpen={true}\n {...editProps}\n />\n ) : (\n <>\n <CommentWrapper>\n <ReactMarkdown\n remarkPlugins={[remarkGfm, emoji, remarkDirective, remarkDirectiveRehype]}\n urlTransform={(url) => url}\n components={{\n // a links\n // @ts-ignore\n a: (props) =>\n // @ts-ignore\n aTag(props, {\n entityId,\n projectName,\n projectInfo,\n onReferenceClick,\n onReferenceTooltip: setRefTooltip,\n activityId,\n categoryPrimary: categoryData?.color,\n categorySecondary: blendedCategoryColor.secondary,\n }),\n // checkbox inputs\n // @ts-ignore\n input: (props) => inputTag(props, { activity, onCheckChange }),\n // code syntax highlighting\n // eslint-disable-next-line\n // @ts-ignore\n code: (props) => codeTag(props),\n // @ts-ignore\n blockquote: (props) => blockquoteTag(props),\n // @ts-ignore\n tip: (props) => (\n <Styled.Tip>\n <Icon icon=\"info\" />\n {props.children}\n </Styled.Tip>\n ),\n // @ts-ignore\n status: (props) => {\n return (\n <ActivityStatus name={props.id} statuses={statuses}>\n {props.children}\n </ActivityStatus>\n )\n },\n }}\n >\n {body}\n </ReactMarkdown>\n </CommentWrapper>\n {/* file uploads */}\n {/* @ts-ignore */}\n <FilesGrid\n files={files}\n isCompact={files.length > 6}\n activityId={activityId}\n projectName={projectName}\n isDownloadable\n onExpand={onFileExpand}\n onAnnotationClick={onAnnotationClick}\n onRemove={undefined}\n />\n </>\n )}\n\n {!isEditing && (\n <div style={{ marginTop: '16px' }}>\n {mappedReactions && (\n <Reactions\n reactions={mappedReactions}\n changeHandler={reactionChangeHandler}\n readOnly={readOnly}\n category={categoryData && !isGuest ? categoryData.name : undefined}\n categoryPrimary={categoryData?.color}\n categorySecondary={blendedCategoryColor.secondary}\n categoryTertiary={blendedCategoryColor.primary}\n />\n )}\n </div>\n )}\n </Styled.Body>\n </Styled.Comment>\n </>\n )\n}\n\nexport default ActivityComment\n"],"names":["ActivityComment","activity","onCheckChange","onDelete","onUpdate","projectInfo","editProps","projectName","entityType","onReferenceClick","onFileExpand","showOrigin","isHighlighted","readOnly","statuses","userName","createReaction","deleteReaction","editingId","setEditingId","categories","isGuest","useFeedContext","categoryData","useMemo","cat","_a","blendedCategoryColor","useBlendedCategoryColor","body","authorName","authorFullName","createdAt","referenceType","entityId","activityId","author","isOwner","files","origin","onGoToFrame","setHighlightedActivities","useDetailsPanelContext","handleEditComment","handleEditCancel","handleSave","value","data","isEditing","isRef","handleDelete","refs","getTextRefs","deleteConfirmation","confirmDelete","setRefTooltip","useReferenceTooltip","mappedReactions","mapGraphQLReactions","reactionChangeHandler","reaction","onAnnotationClick","useCallback","file","jsx","Fragment","jsxs","Styled.Comment","clsx","ActivityHeader","Styled.Body","Styled.Tools","Styled.ToolButton","CategoryTag","CommentInput","CommentWrapper","ReactMarkdown","remarkGfm","emoji","remarkDirective","remarkDirectiveRehype","url","props","aTag","inputTag","codeTag","blockquoteTag","Styled.Tip","Icon","ActivityStatus","FilesGrid","Reactions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ActivityComment.es.js","sources":["../../../../../../../src/containers/Feed/components/ActivityComment/ActivityComment.tsx"],"sourcesContent":["import clsx from 'clsx'\nimport { useCallback, useMemo } from 'react'\nimport ReactMarkdown from 'react-markdown'\nimport emoji from 'remark-emoji'\nimport remarkGfm from 'remark-gfm'\nimport remarkDirective from 'remark-directive'\nimport remarkDirectiveRehype from 'remark-directive-rehype'\n\nimport CommentInput from '../CommentInput/CommentInput'\nimport Reactions from '../ReactionContainer/Reactions'\nimport { Reaction } from '../ReactionContainer/types'\nimport useReferenceTooltip from '../../hooks/useReferenceTooltip'\nimport FilesGrid, { FilesGridProps } from '../FilesGrid/FilesGrid'\n\nimport { getTextRefs } from '../CommentInput/quillToMarkdown'\nimport * as Styled from './ActivityComment.styled'\nimport CommentWrapper from './CommentWrapper'\nimport { aTag, blockquoteTag, codeTag, inputTag } from './ActivityMarkdownComponents'\nimport { mapGraphQLReactions } from './mappers'\nimport { Icon } from '@ynput/ayon-react-components'\nimport ActivityStatus from '../ActivityStatus/ActivityStatus'\nimport { useFeedContext } from '../../context/FeedContext'\nimport { confirmDelete } from '../../../../util'\nimport ActivityHeader, { ActivityHeaderProps } from '../ActivityHeader/ActivityHeader'\nimport type { Status } from '../../../ProjectTreeTable/types/project'\nimport { SavedAnnotationMetadata } from '../../index'\nimport { useDetailsPanelContext } from '@shared/context'\nimport { useBlendedCategoryColor } from '../CommentInput/hooks/useBlendedCategoryColor'\nimport { CategoryTag } from '../ActivityCategorySelect/CategoryTag'\n\ntype Props = {\n activity: any\n onCheckChange?: Function\n onDelete?: (activityId: string, entityId: string, refs: any) => Promise<void>\n onUpdate?: (value: any, files: any, refs?: any, data?: any) => Promise<void>\n projectInfo: any\n editProps?: {\n disabled: boolean\n isLoading: boolean\n }\n projectName: string\n entityType: string\n onReferenceClick?: ActivityHeaderProps['onReferenceClick']\n onFileExpand?: FilesGridProps['onExpand']\n showOrigin?: boolean\n isHighlighted?: boolean\n readOnly?: boolean\n statuses: Status[]\n}\n\nconst ActivityComment = ({\n activity = {},\n onCheckChange,\n onDelete,\n onUpdate,\n projectInfo,\n editProps,\n projectName,\n entityType,\n onReferenceClick,\n onFileExpand,\n showOrigin,\n isHighlighted,\n readOnly,\n statuses = [],\n}: Props) => {\n const { userName, createReaction, deleteReaction, editingId, setEditingId, categories, isGuest } =\n useFeedContext()\n\n const categoryData = useMemo(() => {\n return categories.find((cat) => cat.name === activity.activityData?.category) || null\n }, [activity?.activityData?.category, categories])\n // Compute blended background color for category\n const blendedCategoryColor = useBlendedCategoryColor(categoryData?.color)\n\n let {\n body,\n authorName,\n authorFullName,\n createdAt,\n referenceType,\n entityId,\n activityId,\n author,\n isOwner,\n files = [],\n origin,\n } = activity\n if (!authorName) authorName = author?.name || ''\n if (!authorFullName) authorFullName = author?.fullName || authorName\n\n const { onGoToFrame, setHighlightedActivities } = useDetailsPanelContext()\n\n const handleEditComment = () => {\n setEditingId(activityId)\n }\n\n const handleEditCancel = () => {\n // close the edit comment\n setEditingId(null)\n }\n\n const handleSave = async (value: any, files: any, data?: any) => {\n await onUpdate?.(value, files, undefined, data)\n setEditingId(null)\n }\n\n const isEditing = editingId === activityId\n\n const isRef = referenceType !== 'origin' || showOrigin\n\n const handleDelete = async () => {\n const refs = getTextRefs(body)\n\n // if the comment is a reference, (it's origin is not the entity)\n // we need to delete the reference from the origin as well\n // add it to the refs to delete\n if (isRef && origin) {\n refs.push({ id: origin.id, type: origin.type })\n }\n\n // note: body is used to match other refs to delete\n onDelete && (await onDelete(activityId, entityId, refs))\n }\n\n const deleteConfirmation = () => {\n confirmDelete({\n title: 'Delete comment',\n message: 'Are you sure you want to delete this comment?',\n accept: async () => {\n await handleDelete()\n },\n })\n }\n\n const [, setRefTooltip] = useReferenceTooltip()\n\n const mappedReactions = useMemo(\n () => mapGraphQLReactions(activity.reactions, userName),\n [[...(activity.reactions || [])]],\n )\n\n const reactionChangeHandler = (reaction: Reaction) => {\n if (reaction.isActive) {\n createReaction({\n projectName: projectName,\n // @ts-ignore exposed endpoint doesn't need the username, we still need to pass it for the optimistic update\n userName: userName,\n activityId: activityId,\n createReactionModel: {\n reaction: reaction.type,\n },\n })\n } else {\n deleteReaction({\n projectName: projectName,\n // @ts-ignore exposed endpoint doesn't need the username, we still need to pass it for the optimistic update\n userName: userName,\n activityId: activityId,\n reaction: reaction.type,\n })\n }\n }\n\n const onAnnotationClick = useCallback(\n (file: any) => {\n if (!file.annotation) return\n // annotation frame numbers are 1-based\n onGoToFrame?.((file.annotation as SavedAnnotationMetadata).range[0])\n setHighlightedActivities([activityId])\n },\n [onGoToFrame],\n )\n\n return (\n <>\n <Styled.Comment\n className={clsx('comment', {\n isOwner,\n isEditing,\n isHighlighted,\n category: !!categoryData && !isGuest,\n })}\n id={activityId}\n $categoryPrimary={categoryData?.color}\n $categoryTertiary={blendedCategoryColor.primary}\n $categorySecondary={blendedCategoryColor.secondary}\n >\n <ActivityHeader\n name={authorName}\n fullName={authorFullName}\n date={createdAt}\n isRef={isRef}\n activity={activity}\n // projectInfo={projectInfo}\n projectName={projectName}\n entityType={entityType}\n onReferenceClick={onReferenceClick}\n onReferenceTooltip={setRefTooltip}\n children={undefined}\n />\n <Styled.Body className={clsx('comment-body', { isEditing })}>\n {!readOnly && isOwner ? (\n <Styled.Tools className={'tools'}>\n {onDelete && (\n <Styled.ToolButton\n icon=\"delete\"\n onClick={deleteConfirmation}\n tooltip=\"Delete comment\"\n variant=\"text\"\n />\n )}\n {handleEditComment && (\n <Styled.ToolButton icon=\"edit_square\" onClick={handleEditComment} variant=\"text\" />\n )}\n </Styled.Tools>\n ) : (\n <div className=\"tools\"></div>\n )}\n\n {!isEditing && !isGuest && categoryData && (\n <CategoryTag\n value={categoryData.name}\n color={categoryData.color}\n style={{\n top: -4,\n left: -4,\n }}\n isCompact\n />\n )}\n\n {isEditing ? (\n <CommentInput\n initValue={body}\n initFiles={files}\n initCategory={categoryData?.name}\n isEditing\n onClose={handleEditCancel}\n onSubmit={handleSave}\n isOpen={true}\n {...editProps}\n />\n ) : (\n <>\n <CommentWrapper>\n <ReactMarkdown\n remarkPlugins={[remarkGfm, emoji, remarkDirective, remarkDirectiveRehype]}\n urlTransform={(url) => url}\n components={{\n // a links\n // @ts-ignore\n a: (props) =>\n // @ts-ignore\n aTag(props, {\n entityId,\n projectName,\n projectInfo,\n onReferenceClick,\n onReferenceTooltip: setRefTooltip,\n activityId,\n categoryPrimary: categoryData?.color,\n categorySecondary: blendedCategoryColor.secondary,\n }),\n // checkbox inputs\n // @ts-ignore\n input: (props) => inputTag(props, { activity, onCheckChange }),\n // code syntax highlighting\n // eslint-disable-next-line\n // @ts-ignore\n code: (props) => codeTag(props),\n // @ts-ignore\n blockquote: (props) => blockquoteTag(props),\n // @ts-ignore\n tip: (props) => (\n <Styled.Tip>\n <Icon icon=\"info\" />\n {props.children}\n </Styled.Tip>\n ),\n // @ts-ignore\n status: (props) => {\n return (\n <ActivityStatus name={props.id} statuses={statuses}>\n {props.children}\n </ActivityStatus>\n )\n },\n }}\n >\n {body}\n </ReactMarkdown>\n </CommentWrapper>\n {/* file uploads */}\n {/* @ts-ignore */}\n <FilesGrid\n files={files}\n isCompact={files.length > 6}\n activityId={activityId}\n projectName={projectName}\n isDownloadable\n onExpand={onFileExpand}\n onAnnotationClick={onAnnotationClick}\n onRemove={undefined}\n />\n </>\n )}\n\n {!isEditing && (\n <div style={{ marginTop: '16px' }}>\n {mappedReactions && (\n <Reactions\n reactions={mappedReactions}\n changeHandler={reactionChangeHandler}\n readOnly={readOnly}\n category={categoryData && !isGuest ? categoryData.name : undefined}\n categoryPrimary={categoryData?.color}\n categorySecondary={blendedCategoryColor.secondary}\n categoryTertiary={blendedCategoryColor.primary}\n />\n )}\n </div>\n )}\n </Styled.Body>\n </Styled.Comment>\n </>\n )\n}\n\nexport default ActivityComment\n"],"names":["ActivityComment","activity","onCheckChange","onDelete","onUpdate","projectInfo","editProps","projectName","entityType","onReferenceClick","onFileExpand","showOrigin","isHighlighted","readOnly","statuses","userName","createReaction","deleteReaction","editingId","setEditingId","categories","isGuest","useFeedContext","categoryData","useMemo","cat","_a","blendedCategoryColor","useBlendedCategoryColor","body","authorName","authorFullName","createdAt","referenceType","entityId","activityId","author","isOwner","files","origin","onGoToFrame","setHighlightedActivities","useDetailsPanelContext","handleEditComment","handleEditCancel","handleSave","value","data","isEditing","isRef","handleDelete","refs","getTextRefs","deleteConfirmation","confirmDelete","setRefTooltip","useReferenceTooltip","mappedReactions","mapGraphQLReactions","reactionChangeHandler","reaction","onAnnotationClick","useCallback","file","jsx","Fragment","jsxs","Styled.Comment","clsx","ActivityHeader","Styled.Body","Styled.Tools","Styled.ToolButton","CategoryTag","CommentInput","CommentWrapper","ReactMarkdown","remarkGfm","emoji","remarkDirective","remarkDirectiveRehype","url","props","aTag","inputTag","codeTag","blockquoteTag","Styled.Tip","Icon","ActivityStatus","FilesGrid","Reactions"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const e=require("../../../../../../_virtual/jsx-runtime.cjs.js"),p=require("react"),T=require("@ynput/ayon-react-components"),b=require("../ActivityHeader/ActivityHeader.cjs.js"),t=require("./ActivityVersions.styled.cjs.js"),f=require("../ActivityGroup/ActivityGroup.styled.cjs.js"),k=require("../ActivityDate.cjs.js");require("../../../../context/RemoteModulesContext.cjs.js");const w=require("../../../../context/DetailsPanelContext.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");const D=({activity:l,projectName:s,entityType:h,onReferenceClick:q,filter:a})=>{const{onOpenViewer:r}=w.useDetailsPanelContext();let{authorName:m,authorFullName:E,createdAt:d,versions:
|
|
1
|
+
"use strict";const e=require("../../../../../../_virtual/jsx-runtime.cjs.js"),p=require("react"),T=require("@ynput/ayon-react-components"),b=require("../ActivityHeader/ActivityHeader.cjs.js"),t=require("./ActivityVersions.styled.cjs.js"),f=require("../ActivityGroup/ActivityGroup.styled.cjs.js"),k=require("../ActivityDate.cjs.js");require("../../../../context/RemoteModulesContext.cjs.js");const w=require("../../../../context/DetailsPanelContext.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 D=({activity:l,projectName:s,entityType:h,onReferenceClick:q,filter:a})=>{const{onOpenViewer:r}=w.useDetailsPanelContext();let{authorName:m,authorFullName:E,createdAt:d,versions:i=[]}=l;const[n,R]=p.useState(a==="versions"),o=2,[y,v]=p.useState(!1),A=(u,x)=>r==null?void 0:r({versionIds:[u],productId:x,projectName:s});return e.jsxRuntimeExports.jsxs(t.Container,{children:[e.jsxRuntimeExports.jsx(b,{name:m,fullName:E||m,date:d,activity:l,projectName:s,entityType:h,onReferenceClick:q}),i.flatMap((u,x)=>{const{name:C,id:c,productId:S,productName:I,updatedAt:N,comment:j}=u;return(x<o||n)&&e.jsxRuntimeExports.jsxs(t.Card,{onClick:()=>A(c,S),children:[e.jsxRuntimeExports.jsxs(t.Content,{children:[e.jsxRuntimeExports.jsxs("div",{children:[e.jsxRuntimeExports.jsxs(t.Title,{children:[e.jsxRuntimeExports.jsx("span",{children:I}),e.jsxRuntimeExports.jsx(k.default,{date:d,isExact:!0})]}),e.jsxRuntimeExports.jsx(t.VersionName,{className:"version",children:C})]}),e.jsxRuntimeExports.jsx(t.Thumbnail,{projectName:s,entityId:c,entityType:"version",onError:()=>v(!0),iconOnly:y,entityUpdatedAt:N,icon:"play_circle"})]}),j&&e.jsxRuntimeExports.jsx(t.Comment,{children:j})]},c)}),a!=="versions"&&i.length>o&&e.jsxRuntimeExports.jsxs(f.More,{onClick:()=>R(!n),children:[e.jsxRuntimeExports.jsx(T.Icon,{icon:"more"}),e.jsxRuntimeExports.jsx("span",{children:n?"Show less":`Show ${i.length-o} more versions`})]})]})};module.exports=D;
|
|
2
2
|
//# sourceMappingURL=ActivityVersions.cjs.js.map
|
package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActivityVersions.cjs.js","sources":["../../../../../../../src/containers/Feed/components/ActivityVersions/ActivityVersions.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { Icon } from '@ynput/ayon-react-components'\nimport ActivityHeader from '../ActivityHeader/ActivityHeader'\nimport * as Styled from './ActivityVersions.styled'\nimport { More } from '../ActivityGroup/ActivityGroup.styled'\nimport ActivityDate from '../ActivityDate'\nimport { useDetailsPanelContext } from '@shared/context'\n\ninterface Version {\n name: string\n id: string\n productId: string\n productName: string\n updatedAt: string\n comment?: string\n}\n\ninterface ActivityVersionsProps {\n activity: {\n authorName?: string\n authorFullName?: string\n createdAt?: string\n versions?: Version[]\n [key: string]: any\n }\n projectName: string\n entityType?: string\n onReferenceClick?: (ref: any) => void\n filter?: string\n}\n\nconst ActivityVersions: React.FC<ActivityVersionsProps> = ({\n activity,\n projectName,\n entityType,\n onReferenceClick,\n filter,\n}) => {\n const { onOpenViewer } = useDetailsPanelContext()\n let { authorName, authorFullName, createdAt, versions = [] } = activity\n\n const [showAll, setShowAll] = useState(filter === 'versions')\n const limit = 2\n\n const [thumbnailError, setThumbnailError] = useState(false)\n\n const handleClick = (versionId: string, productId: string) =>\n onOpenViewer?.({ versionIds: [versionId], productId, projectName })\n\n return (\n <Styled.Container>\n <ActivityHeader\n name={authorName}\n fullName={authorFullName || authorName}\n date={createdAt}\n activity={activity}\n projectName={projectName}\n entityType={entityType}\n onReferenceClick={onReferenceClick}\n />\n {versions.flatMap((version, index) => {\n const { name, id, productId, productName, updatedAt, comment } = version\n return (\n (index < limit || showAll) && (\n <Styled.Card onClick={() => handleClick(id, productId)} key={id}>\n <Styled.Content>\n <div>\n <Styled.Title>\n <span>{productName}</span>\n <ActivityDate date={createdAt} isExact />\n </Styled.Title>\n <Styled.VersionName className=\"version\">{name}</Styled.VersionName>\n </div>\n <Styled.Thumbnail\n {...{ projectName }}\n entityId={id}\n entityType=\"version\"\n onError={() => setThumbnailError(true)}\n iconOnly={thumbnailError}\n entityUpdatedAt={updatedAt}\n icon={'play_circle'}\n />\n </Styled.Content>\n {comment && <Styled.Comment>{comment}</Styled.Comment>}\n </Styled.Card>\n )\n )\n })}\n {filter !== 'versions' && versions.length > limit && (\n <More onClick={() => setShowAll(!showAll)}>\n <Icon icon=\"more\" />\n <span>{showAll ? `Show less` : `Show ${versions.length - limit} more versions`}</span>\n </More>\n )}\n </Styled.Container>\n )\n}\n\nexport default ActivityVersions\n"],"names":["ActivityVersions","activity","projectName","entityType","onReferenceClick","filter","onOpenViewer","useDetailsPanelContext","authorName","authorFullName","createdAt","versions","showAll","setShowAll","useState","limit","thumbnailError","setThumbnailError","handleClick","versionId","productId","jsxs","Styled.Container","jsx","ActivityHeader","version","index","name","id","productName","updatedAt","comment","Styled.Card","Styled.Content","Styled.Title","ActivityDate","Styled.VersionName","Styled.Thumbnail","Styled.Comment","More","Icon"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ActivityVersions.cjs.js","sources":["../../../../../../../src/containers/Feed/components/ActivityVersions/ActivityVersions.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { Icon } from '@ynput/ayon-react-components'\nimport ActivityHeader from '../ActivityHeader/ActivityHeader'\nimport * as Styled from './ActivityVersions.styled'\nimport { More } from '../ActivityGroup/ActivityGroup.styled'\nimport ActivityDate from '../ActivityDate'\nimport { useDetailsPanelContext } from '@shared/context'\n\ninterface Version {\n name: string\n id: string\n productId: string\n productName: string\n updatedAt: string\n comment?: string\n}\n\ninterface ActivityVersionsProps {\n activity: {\n authorName?: string\n authorFullName?: string\n createdAt?: string\n versions?: Version[]\n [key: string]: any\n }\n projectName: string\n entityType?: string\n onReferenceClick?: (ref: any) => void\n filter?: string\n}\n\nconst ActivityVersions: React.FC<ActivityVersionsProps> = ({\n activity,\n projectName,\n entityType,\n onReferenceClick,\n filter,\n}) => {\n const { onOpenViewer } = useDetailsPanelContext()\n let { authorName, authorFullName, createdAt, versions = [] } = activity\n\n const [showAll, setShowAll] = useState(filter === 'versions')\n const limit = 2\n\n const [thumbnailError, setThumbnailError] = useState(false)\n\n const handleClick = (versionId: string, productId: string) =>\n onOpenViewer?.({ versionIds: [versionId], productId, projectName })\n\n return (\n <Styled.Container>\n <ActivityHeader\n name={authorName}\n fullName={authorFullName || authorName}\n date={createdAt}\n activity={activity}\n projectName={projectName}\n entityType={entityType}\n onReferenceClick={onReferenceClick}\n />\n {versions.flatMap((version, index) => {\n const { name, id, productId, productName, updatedAt, comment } = version\n return (\n (index < limit || showAll) && (\n <Styled.Card onClick={() => handleClick(id, productId)} key={id}>\n <Styled.Content>\n <div>\n <Styled.Title>\n <span>{productName}</span>\n <ActivityDate date={createdAt} isExact />\n </Styled.Title>\n <Styled.VersionName className=\"version\">{name}</Styled.VersionName>\n </div>\n <Styled.Thumbnail\n {...{ projectName }}\n entityId={id}\n entityType=\"version\"\n onError={() => setThumbnailError(true)}\n iconOnly={thumbnailError}\n entityUpdatedAt={updatedAt}\n icon={'play_circle'}\n />\n </Styled.Content>\n {comment && <Styled.Comment>{comment}</Styled.Comment>}\n </Styled.Card>\n )\n )\n })}\n {filter !== 'versions' && versions.length > limit && (\n <More onClick={() => setShowAll(!showAll)}>\n <Icon icon=\"more\" />\n <span>{showAll ? `Show less` : `Show ${versions.length - limit} more versions`}</span>\n </More>\n )}\n </Styled.Container>\n )\n}\n\nexport default ActivityVersions\n"],"names":["ActivityVersions","activity","projectName","entityType","onReferenceClick","filter","onOpenViewer","useDetailsPanelContext","authorName","authorFullName","createdAt","versions","showAll","setShowAll","useState","limit","thumbnailError","setThumbnailError","handleClick","versionId","productId","jsxs","Styled.Container","jsx","ActivityHeader","version","index","name","id","productName","updatedAt","comment","Styled.Card","Styled.Content","Styled.Title","ActivityDate","Styled.VersionName","Styled.Thumbnail","Styled.Comment","More","Icon"],"mappings":"wgCA+BA,MAAMA,EAAoD,CAAC,CACzD,SAAAC,EACA,YAAAC,EACA,WAAAC,EACA,iBAAAC,EACA,OAAAC,CACF,IAAM,CACE,KAAA,CAAE,aAAAC,CAAa,EAAIC,yBAAuB,EAChD,GAAI,CAAE,WAAAC,EAAY,eAAAC,EAAgB,UAAAC,EAAW,SAAAC,EAAW,IAAOV,EAE/D,KAAM,CAACW,EAASC,CAAU,EAAIC,EAAAA,SAAST,IAAW,UAAU,EACtDU,EAAQ,EAER,CAACC,EAAgBC,CAAiB,EAAIH,EAAAA,SAAS,EAAK,EAEpDI,EAAc,CAACC,EAAmBC,IACtCd,GAAA,YAAAA,EAAe,CAAE,WAAY,CAACa,CAAS,EAAG,UAAAC,EAAW,YAAAlB,CAAA,GAGrD,OAAAmB,EAAA,kBAAA,KAACC,YAAA,CACC,SAAA,CAAAC,EAAA,kBAAA,IAACC,EAAA,CACC,KAAMhB,EACN,SAAUC,GAAkBD,EAC5B,KAAME,EACN,SAAAT,EACA,YAAAC,EACA,WAAAC,EACA,iBAAAC,CAAA,CACF,EACCO,EAAS,QAAQ,CAACc,EAASC,IAAU,CACpC,KAAM,CAAE,KAAAC,EAAM,GAAAC,EAAI,UAAAR,EAAW,YAAAS,EAAa,UAAAC,EAAW,QAAAC,GAAYN,EACjE,OACGC,EAAQX,GAASH,IAChBS,EAAA,kBAAA,KAACW,EAAO,KAAP,CAAY,QAAS,IAAMd,EAAYU,EAAIR,CAAS,EACnD,SAAA,CAACC,yBAAAY,EAAAA,QAAA,CACC,SAAA,CAAAZ,yBAAC,MACC,CAAA,SAAA,CAACA,yBAAAa,EAAAA,MAAA,CACC,SAAA,CAAAX,EAAAA,kBAAAA,IAAC,QAAM,SAAYM,CAAA,CAAA,EAClBN,EAAA,kBAAA,IAAAY,EAAA,QAAA,CAAa,KAAMzB,EAAW,QAAO,EAAC,CAAA,CAAA,EACzC,0BACC0B,EAAO,YAAP,CAAmB,UAAU,UAAW,SAAKT,CAAA,CAAA,CAAA,EAChD,EACAJ,EAAA,kBAAA,IAACc,EAAO,UAAP,CACO,YAAAnC,EACN,SAAU0B,EACV,WAAW,UACX,QAAS,IAAMX,EAAkB,EAAI,EACrC,SAAUD,EACV,gBAAiBc,EACjB,KAAM,aAAA,CAAA,CACR,EACF,EACCC,GAAWR,EAAAA,kBAAAA,IAACe,EAAAA,QAAA,CAAgB,SAAQP,CAAA,CAAA,CAAA,CAAA,EAnBsBH,CAoB7D,CAAA,CAGL,EACAvB,IAAW,YAAcM,EAAS,OAASI,GAC1CM,EAAA,kBAAA,KAACkB,OAAK,CAAA,QAAS,IAAM1B,EAAW,CAACD,CAAO,EACtC,SAAA,CAACW,EAAAA,kBAAAA,IAAAiB,EAAA,KAAA,CAAK,KAAK,MAAO,CAAA,EAClBjB,EAAAA,kBAAAA,IAAC,QAAM,SAAUX,EAAA,YAAc,QAAQD,EAAS,OAASI,CAAK,gBAAiB,CAAA,CAAA,CACjF,CAAA,CAAA,EAEJ,CAEJ"}
|
|
@@ -17,6 +17,7 @@ import "../../../../context/AddonContext.es.js";
|
|
|
17
17
|
import "../../../../context/PowerpackContext.es.js";
|
|
18
18
|
import "../../../../context/MoveEntityContext.es.js";
|
|
19
19
|
import "../../../../context/MenuContext.es.js";
|
|
20
|
+
import "../../../../context/WebsocketContext.es.js";
|
|
20
21
|
const et = ({
|
|
21
22
|
activity: a,
|
|
22
23
|
projectName: r,
|
|
@@ -25,8 +26,8 @@ const et = ({
|
|
|
25
26
|
filter: c
|
|
26
27
|
}) => {
|
|
27
28
|
const { onOpenViewer: o } = U();
|
|
28
|
-
let { authorName: d, authorFullName: f, createdAt: p, versions:
|
|
29
|
-
const [
|
|
29
|
+
let { authorName: d, authorFullName: f, createdAt: p, versions: i = [] } = a;
|
|
30
|
+
const [e, v] = x(c === "versions"), s = 2, [y, A] = x(!1), C = (n, m) => o == null ? void 0 : o({ versionIds: [n], productId: m, projectName: r });
|
|
30
31
|
return /* @__PURE__ */ t.jsxs(k, { children: [
|
|
31
32
|
/* @__PURE__ */ t.jsx(
|
|
32
33
|
b,
|
|
@@ -40,9 +41,9 @@ const et = ({
|
|
|
40
41
|
onReferenceClick: j
|
|
41
42
|
}
|
|
42
43
|
),
|
|
43
|
-
|
|
44
|
+
i.flatMap((n, m) => {
|
|
44
45
|
const { name: E, id: l, productId: I, productName: N, updatedAt: S, comment: h } = n;
|
|
45
|
-
return (m < s ||
|
|
46
|
+
return (m < s || e) && /* @__PURE__ */ t.jsxs(w, { onClick: () => C(l, I), children: [
|
|
46
47
|
/* @__PURE__ */ t.jsxs(g, { children: [
|
|
47
48
|
/* @__PURE__ */ t.jsxs("div", { children: [
|
|
48
49
|
/* @__PURE__ */ t.jsxs(D, { children: [
|
|
@@ -67,9 +68,9 @@ const et = ({
|
|
|
67
68
|
h && /* @__PURE__ */ t.jsx(H, { children: h })
|
|
68
69
|
] }, l);
|
|
69
70
|
}),
|
|
70
|
-
c !== "versions" &&
|
|
71
|
+
c !== "versions" && i.length > s && /* @__PURE__ */ t.jsxs(P, { onClick: () => v(!e), children: [
|
|
71
72
|
/* @__PURE__ */ t.jsx(T, { icon: "more" }),
|
|
72
|
-
/* @__PURE__ */ t.jsx("span", { children:
|
|
73
|
+
/* @__PURE__ */ t.jsx("span", { children: e ? "Show less" : `Show ${i.length - s} more versions` })
|
|
73
74
|
] })
|
|
74
75
|
] });
|
|
75
76
|
};
|
package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActivityVersions.es.js","sources":["../../../../../../../src/containers/Feed/components/ActivityVersions/ActivityVersions.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { Icon } from '@ynput/ayon-react-components'\nimport ActivityHeader from '../ActivityHeader/ActivityHeader'\nimport * as Styled from './ActivityVersions.styled'\nimport { More } from '../ActivityGroup/ActivityGroup.styled'\nimport ActivityDate from '../ActivityDate'\nimport { useDetailsPanelContext } from '@shared/context'\n\ninterface Version {\n name: string\n id: string\n productId: string\n productName: string\n updatedAt: string\n comment?: string\n}\n\ninterface ActivityVersionsProps {\n activity: {\n authorName?: string\n authorFullName?: string\n createdAt?: string\n versions?: Version[]\n [key: string]: any\n }\n projectName: string\n entityType?: string\n onReferenceClick?: (ref: any) => void\n filter?: string\n}\n\nconst ActivityVersions: React.FC<ActivityVersionsProps> = ({\n activity,\n projectName,\n entityType,\n onReferenceClick,\n filter,\n}) => {\n const { onOpenViewer } = useDetailsPanelContext()\n let { authorName, authorFullName, createdAt, versions = [] } = activity\n\n const [showAll, setShowAll] = useState(filter === 'versions')\n const limit = 2\n\n const [thumbnailError, setThumbnailError] = useState(false)\n\n const handleClick = (versionId: string, productId: string) =>\n onOpenViewer?.({ versionIds: [versionId], productId, projectName })\n\n return (\n <Styled.Container>\n <ActivityHeader\n name={authorName}\n fullName={authorFullName || authorName}\n date={createdAt}\n activity={activity}\n projectName={projectName}\n entityType={entityType}\n onReferenceClick={onReferenceClick}\n />\n {versions.flatMap((version, index) => {\n const { name, id, productId, productName, updatedAt, comment } = version\n return (\n (index < limit || showAll) && (\n <Styled.Card onClick={() => handleClick(id, productId)} key={id}>\n <Styled.Content>\n <div>\n <Styled.Title>\n <span>{productName}</span>\n <ActivityDate date={createdAt} isExact />\n </Styled.Title>\n <Styled.VersionName className=\"version\">{name}</Styled.VersionName>\n </div>\n <Styled.Thumbnail\n {...{ projectName }}\n entityId={id}\n entityType=\"version\"\n onError={() => setThumbnailError(true)}\n iconOnly={thumbnailError}\n entityUpdatedAt={updatedAt}\n icon={'play_circle'}\n />\n </Styled.Content>\n {comment && <Styled.Comment>{comment}</Styled.Comment>}\n </Styled.Card>\n )\n )\n })}\n {filter !== 'versions' && versions.length > limit && (\n <More onClick={() => setShowAll(!showAll)}>\n <Icon icon=\"more\" />\n <span>{showAll ? `Show less` : `Show ${versions.length - limit} more versions`}</span>\n </More>\n )}\n </Styled.Container>\n )\n}\n\nexport default ActivityVersions\n"],"names":["ActivityVersions","activity","projectName","entityType","onReferenceClick","filter","onOpenViewer","useDetailsPanelContext","authorName","authorFullName","createdAt","versions","showAll","setShowAll","useState","limit","thumbnailError","setThumbnailError","handleClick","versionId","productId","jsxs","Styled.Container","jsx","ActivityHeader","version","index","name","id","productName","updatedAt","comment","Styled.Card","Styled.Content","Styled.Title","ActivityDate","Styled.VersionName","Styled.Thumbnail","Styled.Comment","More","Icon"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ActivityVersions.es.js","sources":["../../../../../../../src/containers/Feed/components/ActivityVersions/ActivityVersions.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { Icon } from '@ynput/ayon-react-components'\nimport ActivityHeader from '../ActivityHeader/ActivityHeader'\nimport * as Styled from './ActivityVersions.styled'\nimport { More } from '../ActivityGroup/ActivityGroup.styled'\nimport ActivityDate from '../ActivityDate'\nimport { useDetailsPanelContext } from '@shared/context'\n\ninterface Version {\n name: string\n id: string\n productId: string\n productName: string\n updatedAt: string\n comment?: string\n}\n\ninterface ActivityVersionsProps {\n activity: {\n authorName?: string\n authorFullName?: string\n createdAt?: string\n versions?: Version[]\n [key: string]: any\n }\n projectName: string\n entityType?: string\n onReferenceClick?: (ref: any) => void\n filter?: string\n}\n\nconst ActivityVersions: React.FC<ActivityVersionsProps> = ({\n activity,\n projectName,\n entityType,\n onReferenceClick,\n filter,\n}) => {\n const { onOpenViewer } = useDetailsPanelContext()\n let { authorName, authorFullName, createdAt, versions = [] } = activity\n\n const [showAll, setShowAll] = useState(filter === 'versions')\n const limit = 2\n\n const [thumbnailError, setThumbnailError] = useState(false)\n\n const handleClick = (versionId: string, productId: string) =>\n onOpenViewer?.({ versionIds: [versionId], productId, projectName })\n\n return (\n <Styled.Container>\n <ActivityHeader\n name={authorName}\n fullName={authorFullName || authorName}\n date={createdAt}\n activity={activity}\n projectName={projectName}\n entityType={entityType}\n onReferenceClick={onReferenceClick}\n />\n {versions.flatMap((version, index) => {\n const { name, id, productId, productName, updatedAt, comment } = version\n return (\n (index < limit || showAll) && (\n <Styled.Card onClick={() => handleClick(id, productId)} key={id}>\n <Styled.Content>\n <div>\n <Styled.Title>\n <span>{productName}</span>\n <ActivityDate date={createdAt} isExact />\n </Styled.Title>\n <Styled.VersionName className=\"version\">{name}</Styled.VersionName>\n </div>\n <Styled.Thumbnail\n {...{ projectName }}\n entityId={id}\n entityType=\"version\"\n onError={() => setThumbnailError(true)}\n iconOnly={thumbnailError}\n entityUpdatedAt={updatedAt}\n icon={'play_circle'}\n />\n </Styled.Content>\n {comment && <Styled.Comment>{comment}</Styled.Comment>}\n </Styled.Card>\n )\n )\n })}\n {filter !== 'versions' && versions.length > limit && (\n <More onClick={() => setShowAll(!showAll)}>\n <Icon icon=\"more\" />\n <span>{showAll ? `Show less` : `Show ${versions.length - limit} more versions`}</span>\n </More>\n )}\n </Styled.Container>\n )\n}\n\nexport default ActivityVersions\n"],"names":["ActivityVersions","activity","projectName","entityType","onReferenceClick","filter","onOpenViewer","useDetailsPanelContext","authorName","authorFullName","createdAt","versions","showAll","setShowAll","useState","limit","thumbnailError","setThumbnailError","handleClick","versionId","productId","jsxs","Styled.Container","jsx","ActivityHeader","version","index","name","id","productName","updatedAt","comment","Styled.Card","Styled.Content","Styled.Title","ActivityDate","Styled.VersionName","Styled.Thumbnail","Styled.Comment","More","Icon"],"mappings":";;;;;;;;;;;;;;;;;;;;AA+BA,MAAMA,KAAoD,CAAC;AAAA,EACzD,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,YAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,QAAAC;AACF,MAAM;AACE,QAAA,EAAE,cAAAC,EAAa,IAAIC,EAAuB;AAChD,MAAI,EAAE,YAAAC,GAAY,gBAAAC,GAAgB,WAAAC,GAAW,UAAAC,IAAW,OAAOV;AAE/D,QAAM,CAACW,GAASC,CAAU,IAAIC,EAAST,MAAW,UAAU,GACtDU,IAAQ,GAER,CAACC,GAAgBC,CAAiB,IAAIH,EAAS,EAAK,GAEpDI,IAAc,CAACC,GAAmBC,MACtCd,KAAA,gBAAAA,EAAe,EAAE,YAAY,CAACa,CAAS,GAAG,WAAAC,GAAW,aAAAlB,EAAA;AAGrD,SAAAmB,gBAAAA,EAAA,KAACC,GAAA,EACC,UAAA;AAAA,IAAAC,gBAAAA,EAAA;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,MAAMhB;AAAA,QACN,UAAUC,KAAkBD;AAAA,QAC5B,MAAME;AAAA,QACN,UAAAT;AAAA,QACA,aAAAC;AAAA,QACA,YAAAC;AAAA,QACA,kBAAAC;AAAA,MAAA;AAAA,IACF;AAAA,IACCO,EAAS,QAAQ,CAACc,GAASC,MAAU;AACpC,YAAM,EAAE,MAAAC,GAAM,IAAAC,GAAI,WAAAR,GAAW,aAAAS,GAAa,WAAAC,GAAW,SAAAC,MAAYN;AACjE,cACGC,IAAQX,KAASH,MAChBS,gBAAAA,EAAA,KAACW,GAAA,EAAY,SAAS,MAAMd,EAAYU,GAAIR,CAAS,GACnD,UAAA;AAAA,QAACC,gBAAAA,OAAAY,GAAA,EACC,UAAA;AAAA,UAAAZ,gBAAAA,OAAC,OACC,EAAA,UAAA;AAAA,YAACA,gBAAAA,OAAAa,GAAA,EACC,UAAA;AAAA,cAAAX,gBAAAA,EAAAA,IAAC,UAAM,UAAYM,EAAA,CAAA;AAAA,cAClBN,gBAAAA,EAAA,IAAAY,GAAA,EAAa,MAAMzB,GAAW,SAAO,GAAC,CAAA;AAAA,YAAA,GACzC;AAAA,kCACC0B,GAAA,EAAmB,WAAU,WAAW,UAAKT,EAAA,CAAA;AAAA,UAAA,GAChD;AAAA,UACAJ,gBAAAA,EAAA;AAAA,YAACc;AAAAA,YAAA;AAAA,cACO,aAAAnC;AAAA,cACN,UAAU0B;AAAA,cACV,YAAW;AAAA,cACX,SAAS,MAAMX,EAAkB,EAAI;AAAA,cACrC,UAAUD;AAAA,cACV,iBAAiBc;AAAA,cACjB,MAAM;AAAA,YAAA;AAAA,UAAA;AAAA,QACR,GACF;AAAA,QACCC,KAAWR,gBAAAA,EAAAA,IAACe,GAAA,EAAgB,UAAQP,EAAA,CAAA;AAAA,MAAA,EAAA,GAnBsBH,CAoB7D;AAAA,IAAA,CAGL;AAAA,IACAvB,MAAW,cAAcM,EAAS,SAASI,KAC1CM,gBAAAA,EAAA,KAACkB,GAAK,EAAA,SAAS,MAAM1B,EAAW,CAACD,CAAO,GACtC,UAAA;AAAA,MAACW,gBAAAA,EAAAA,IAAAiB,GAAA,EAAK,MAAK,OAAO,CAAA;AAAA,MAClBjB,gBAAAA,EAAAA,IAAC,UAAM,UAAUX,IAAA,cAAc,QAAQD,EAAS,SAASI,CAAK,iBAAiB,CAAA;AAAA,IAAA,EACjF,CAAA;AAAA,EAAA,GAEJ;AAEJ;"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const i=require("../../../../../../_virtual/jsx-runtime.cjs.js"),l=require("react"),
|
|
2
|
-
`||s===" ",h=
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const i=require("../../../../../../_virtual/jsx-runtime.cjs.js"),l=require("react"),J=require("clsx"),rt=require("react-toastify"),Ie=require("react-quill-ayon"),F=require("@ynput/ayon-react-components"),ot=require("../CommentMentionSelect/CommentMentionSelect.cjs.js"),st=require("./InputMarkdownConvert.cjs.js"),it=require("../FilesGrid/FilesGrid.cjs.js"),C=require("./CommentInput.styled.cjs.js"),lt=require("../../../../components/QuillListStyles/QuillListStyles.cjs.js"),at=require("../../mentionHelpers/getMentionOptions.cjs.js"),ct=require("../../mentionHelpers/getMentionUsers.cjs.js"),ut=require("../../mentionHelpers/getMentionTasks.cjs.js"),dt=require("../../mentionHelpers/getMentionVersions.cjs.js"),pt=require("./quillToMarkdown.cjs.js"),X=require("./helpers.cjs.js"),Me=require("./modules/index.cjs.js"),xt=require("./hooks/useInitialValue.cjs.js"),ht=require("./hooks/useSetCursorEnd.cjs.js"),mt=require("./hooks/useMentionLink.cjs.js"),gt=require("./hooks/useAnnotationsSync.cjs.js"),ft=require("./hooks/useBlendedCategoryColor.cjs.js"),qt=require("./hooks/useAnnotationsUpload.cjs.js"),yt=require("../../context/FeedContext.cjs.js");require("react-dom");require("../Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("lodash");require("uuid");require("../../../../util/pubsub.cjs.js");require("../FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../ReactionContainer/Reactions.styled.cjs.js");require("../ActivityComment/ActivityComment.styled.cjs.js");require("../ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../ActivityReference/ActivityReference.styled.cjs.js");require("react-router-dom");require("../ActivityStatus/ActivityStatus.cjs.js");require("../ActivityHeader/ActivityHeader.styled.cjs.js");require("../ActivityDate.cjs.js");require("../../../../context/RemoteModulesContext.cjs.js");const Ct=require("../../../../context/DetailsPanelContext.cjs.js");require("../../../../context/ThumbnailUploaderContext.cjs.js");require("../../../../context/SettingsPanelContext.cjs.js");require("../../../../context/pip/PiPProvider.cjs.js");require("../../../../context/pip/PiPWrapper.cjs.js");require("../../../../context/AddonProjectContext.cjs.js");require("../../../../context/AddonContext.cjs.js");require("../../../../context/PowerpackContext.cjs.js");require("../../../../context/MoveEntityContext.cjs.js");require("../../../../context/MenuContext.cjs.js");require("../../../../context/WebsocketContext.cjs.js");require("../ActivityCategorySelect/CategoryTag.cjs.js");require("../ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../ActivityVersions/ActivityVersions.styled.cjs.js");require("../ActivityGroup/ActivityGroup.styled.cjs.js");require("../../Feed.styled.cjs.js");require("date-fns");require("../../../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");const Ee=require("../ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../ActivityCategorySelect/CategoryDropdownItem.cjs.js");var Te=Ie.Quill.import("delta");const _=["@","@@","@@@"],K={"@@@":{id:"task"},"@@":{id:"version"},"@":{id:"user",isCircle:!0}},jt=({initValue:Z,initFiles:Fe=[],initCategory:De=null,onSubmit:ee,isEditing:u,disabled:D,isLoading:te,isOpen:d,onOpen:ne,onClose:re})=>{var Re,Se,we;const{projectName:k,entities:V,projectInfo:be,scope:vt,currentTab:Pe,mentionSuggestionsData:Ae,categories:oe,isGuest:f}=yt.useFeedContext(),{hasLicense:Le,onPowerFeature:Ue,user:R}=Ct.useDetailsPanelContext(),Be=!((Re=R==null?void 0:R.data)!=null&&Re.isAdmin)&&!((Se=R==null?void 0:R.data)!=null&&Se.isManager),{users:se,versions:ie,tasks:le}=Ae||{},[ae,He]=l.useState(88),[$,P]=l.useState(""),[S,A]=l.useState(Fe),[Q,L]=l.useState([]),[ce,U]=l.useState(!1),[Ne,ue]=l.useState(!1),{annotations:B,removeAnnotation:z,goToAnnotation:_e}=gt.default({entityId:(we=V[0])==null?void 0:we.id,filesUploading:Q}),[n,j]=l.useState(null),[G,w]=l.useState(0),[H,Ke]=l.useState(De),de=oe.filter(e=>e.accessLevel>=20),M=oe.find(e=>e.name===H),pe=ft.useBlendedCategoryColor(M==null?void 0:M.color),p=l.useRef(null),Ve=l.useRef(null),xe=l.useRef(null);xt({markdownRef:xe,initValue:Z,setEditorValue:P,setInitHeight:He,isOpen:d,filter:Pe}),ht({initHeight:ae,editorRef:p,isEditing:u}),mt({projectName:k}),l.useEffect(()=>{var e,t,r;if(d){if((t=(e=p.current)==null?void 0:e.getEditor())==null||t.enable(),B.length>0&&S.length===0)return;(r=p.current)==null||r.focus()}},[d,p]),_.sort((e,t)=>t.length-e.length);const he=l.useMemo(()=>at(n==null?void 0:n.type,{"@":()=>ct(se),"@@":()=>dt(ie),"@@@":()=>ut(le,be.taskTypes)},n==null?void 0:n.search),[le,ie,se,n==null?void 0:n.type,n==null?void 0:n.search]),b=he.slice(0,5),[O,me]=l.useState();l.useEffect(()=>{O&&(me(null),p.current.getEditor().setSelection(O))},[O]);const ge=e=>{const t=p.current.getEditor(),r=n.type,o=r+(n.search||""),s=r+e.label,a=K[r],h=`${a==null?void 0:a.id}:${e.id}`,v=t.getSelection(!0),E=((v==null?void 0:v.index)||0)-o.length;t.deleteText(E,o.length),t.insertText(E,s,"mention",h);const T=E+s.length;t.updateContents(new Te().retain(T).insert(" ")),t.updateContents(new Te().retain(T+1).delete(1)),me(T+1),j(null),w(0)},$e=e=>{ge(e)},Qe=(e,t,r,o)=>{var E,T;let s=t.ops[0]&&t.ops[0].insert||t.ops[1]&&t.ops[1].insert;const a=s===`
|
|
2
|
+
`||s===" ",h=he[G];if(n&&a&&h&&!f){t.ops[0]&&t.ops[0].retain,ge(h);return}P(e);const v=t.ops.length===2&&!!t.ops[1].delete;if(!s&&v&&(s=o.getText(t.ops[0].retain-1,1)),_.includes(s)){const m=t.ops.findIndex(q=>"insert"in q||"delete"in q),c=s;let y=m===0?0:t.ops[m-1].retain;v&&(y=y-1);let x=null;for(const q of _){let I=!0;if(q.endsWith(c))for(let g=q.length-1;g>=0;g--){if(g===0)continue;const N=q[g-1],nt=y-(q.length-g);if(o.getText(nt,1)!==N){I=!1;break}}else I=!1;if(I){x=q;break}}x?j({type:x,retain:y}):(j(null),w(0))}else if(n){const m=t.ops[0].retain;if(s===" "||!m){j(null),w(0);return}let c=m-n.retain;v||c++;const y=o.getText(n.retain,c),x=y.replace(n.type.slice(-1),"");y.includes(" ")?(j(null),w(0)):j({...n,search:x==null?void 0:x.toLowerCase()})}else{const m=p.current.getEditor(),c=m.getSelection(!1);if(m.getFormat(c==null?void 0:c.index,c==null?void 0:c.length).mention){const[x]=m.getLine(c.index-1)||[],I=(((T=(E=x==null?void 0:x.cache)==null?void 0:E.delta)==null?void 0:T.ops)||[]).reverse().find(g=>{var N;return(N=g.attributes)==null?void 0:N.mention});if(I){const g=I.insert.length;m.deleteText(c.index-g,g)}}}},ze=e=>{var a;const t=p.current.getEditor();let r=((a=t.getSelection(!0))==null?void 0:a.index)||0;const o=t.getText(r-1,1);o!==" "&&o&&(t.insertText(r," "),r++),X.typeWithDelay(t,r,e)},W=e=>{if(n){const{type:t,retain:r,search:o=""}=n,s=p.current.getEditor(),a=t.length+o.length,h=r-t.length+1;s.deleteText(h,a)}ze(e)},Ge=()=>{d||D||ne&&ne()},fe=()=>{(p.current.getEditor().getText().length<2||u)&&P(""),re&&re()},Y=({file:e,data:t})=>{const r={id:t.id,name:e.name,mime:e.type,size:e.size,order:S.length};return A(o=>[...o,r]),L(o=>o.filter(s=>s.name!==e.name)),r},Oe=(e,t,r)=>{r?z==null||z(e):(A(o=>o.filter(s=>s.id!==e)),L(o=>o.filter(s=>s.name!==t)))},qe=(e,t)=>{const r=Math.round(e.loaded*100/e.total);if(r!==100){const o={name:t.name,progress:r,type:t.type,order:S.length+Q.length};L(s=>[...s.filter(h=>h.name!==t.name),o])}},We=e=>{U(!1),X.handleFileDrop(e,k,qe,Y)},Ye=e=>{e.preventDefault(),e.stopPropagation(),U(!0)},Je=qt({projectName:k,onSuccess:Y}),ye=async()=>{try{ue(!0);let e=[],t=[];if(B.length){const{files:a,metadata:h}=await Je(B);e=a,t=h}const[r]=pt.convertToMarkdown($),o=X.parseImages(r),s=[...S,...e];if((o||s.length)&&ee)try{await ee(o,s,{annotations:t,category:f?null:H}),P(""),A([])}catch{return}}catch(e){console.error(e),rt.toast.error("Something went wrong")}finally{ue(!1)}},Xe=e=>{if(n){if(e.key==="Escape"){j(null),w(0);return}n&&e.key;const t=e.key==="ArrowUp"?-1:e.key==="ArrowDown"?1:0;if(t){e.preventDefault();let r=G+t;r<0&&(r=b.length-1),r>=b.length&&(r=0),w(r)}e.key}e.key==="Enter"&&(e.ctrlKey||e.metaKey)&&ye(),e.key==="Escape"&&fe()};let Ce=d?ae+41:44;u&&(Ce=void 0);const Ze=l.useMemo(()=>Me.getModules({imageUploader:{projectName:k,onUpload:Y,onUploadProgress:qe}}),[k,A,L]),je=[...B,...S||[],...Q].sort((e,t)=>e.order-t.order),et=je.length>3;let ve=null;V.length&&V[0].entityType==="folder"&&(n==null?void 0:n.type)==="@@"&&(ve="Version mentions are disabled for folders");const ke=e=>D?f?"You do not have permission to comment.":"Commenting is disabled across multiple projects.":f||!e?"Leave a comment":"Comment or mention with @user, @@version, @@@task...";return i.jsxRuntimeExports.jsx(i.jsxRuntimeExports.Fragment,{children:i.jsxRuntimeExports.jsxs(C.AutoHeight,{className:J("comment-container",{isOpen:d,isEditing:u}),onDragOver:Ye,onDragLeave:()=>U(!1),onDrop:We,onClick:()=>U(!1),onKeyDown:e=>e.stopPropagation(),children:[i.jsxRuntimeExports.jsxs(C.Comment,{className:J("block-shortcuts",{isOpen:d,isClosed:!d||D,isEditing:u,isDropping:ce,disabled:D,isLoading:te,isSubmitting:Ne,category:!!H&&!f}),onKeyDown:Xe,onClick:Ge,$categoryPrimary:M==null?void 0:M.color,$categoryTertiary:pe.primary,$categorySecondary:pe.secondary,children:[i.jsxRuntimeExports.jsx(C.Markdown,{ref:xe,children:i.jsxRuntimeExports.jsx(st,{typeOptions:K,initValue:Z})}),d&&i.jsxRuntimeExports.jsx(it,{files:je,isCompact:et||u,onRemove:Oe,projectName:k,onAnnotationClick:_e,style:{borderBottom:"1px solid var(--md-sys-color-outline-variant)",height:"100%"},isEditing:!0,pt:{file:{style:{height:u?70:void 0}}}}),d&&!D?i.jsxRuntimeExports.jsxs(lt.QuillListStyles,{ref:Ve,children:[!f&&i.jsxRuntimeExports.jsx(Ee.ActivityCategorySelect,{value:H,categories:de,onChange:e=>Ke(e),isCompact:u,hasPowerpack:Le,onPowerFeature:Ue,isHidden:Ee.isCategoryHidden(de,{isGuest:f,isUser:Be}),style:{position:u?"relative":"absolute",left:4,top:u?0:4}}),i.jsxRuntimeExports.jsx(Ie,{theme:"snow",style:{minHeight:Ce,maxHeight:300},ref:p,value:$,onChange:Qe,readOnly:!d,placeholder:ke(!0),modules:Ze,formats:Me.quillFormats})]}):i.jsxRuntimeExports.jsx(C.Placeholder,{children:ke()}),i.jsxRuntimeExports.jsxs(C.Footer,{children:[!f&&i.jsxRuntimeExports.jsxs(C.Buttons,{children:[i.jsxRuntimeExports.jsx(F.Button,{icon:"person",variant:"text",onClick:()=>W("@"),"data-tooltip":"Mention user","data-shortcut":"@"}),i.jsxRuntimeExports.jsx(F.Button,{icon:"layers",variant:"text",onClick:()=>W("@@"),"data-tooltip":"Mention version","data-shortcut":"@@"}),i.jsxRuntimeExports.jsx(F.Button,{icon:"check_circle",variant:"text",onClick:()=>W("@@@"),"data-tooltip":"Mention task","data-shortcut":"@@@"})]}),i.jsxRuntimeExports.jsxs(C.Buttons,{style:{marginLeft:"auto"},children:[u&&i.jsxRuntimeExports.jsx(F.Button,{variant:"text",onClick:fe,children:"Cancel"}),i.jsxRuntimeExports.jsx(F.SaveButton,{label:u?"Save":"Comment",className:"comment",active:!!$||!!S.length,onClick:ye,disabled:te})]})]}),i.jsxRuntimeExports.jsx(C.Dropzone,{className:J({show:ce&&d}),children:i.jsxRuntimeExports.jsx(F.Icon,{icon:"cloud_upload"})})]}),i.jsxRuntimeExports.jsx(ot,{mention:n,options:b,onChange:$e,types:_,config:K[n==null?void 0:n.type],noneFound:!b.length&&(n==null?void 0:n.search),noneFoundAtAll:!b.length&&!(n!=null&&n.search),selectedIndex:G,error:ve,isGuest:f})]})})};exports.default=jt;exports.mentionTypeOptions=K;
|
|
3
3
|
//# sourceMappingURL=CommentInput.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommentInput.cjs.js","sources":["../../../../../../../src/containers/Feed/components/CommentInput/CommentInput.tsx"],"sourcesContent":["// React and related hooks\nimport React, { FC, useEffect, useMemo, useRef, useState } from 'react'\n\n// Third-party libraries\nimport clsx from 'clsx'\nimport { toast } from 'react-toastify'\nimport ReactQuill, { Quill } from 'react-quill-ayon'\n\n// Components\nimport { Button, Icon, SaveButton } from '@ynput/ayon-react-components'\nimport CommentMentionSelect from '../CommentMentionSelect/CommentMentionSelect'\nimport InputMarkdownConvert from './InputMarkdownConvert'\nimport FilesGrid from '../FilesGrid'\n\n// Styled components\nimport * as Styled from './CommentInput.styled'\nimport { QuillListStyles } from '../../../../components/QuillListStyles'\n\n// Helpers and utilities\nimport getMentionOptions from '../../mentionHelpers/getMentionOptions'\nimport getMentionUsers from '../../mentionHelpers/getMentionUsers'\nimport getMentionTasks from '../../mentionHelpers/getMentionTasks'\nimport getMentionVersions from '../../mentionHelpers/getMentionVersions'\nimport { convertToMarkdown } from './quillToMarkdown'\nimport { handleFileDrop, parseImages, typeWithDelay } from './helpers'\nimport { getModules, quillFormats } from './modules'\n\n// Hooks\nimport useInitialValue from './hooks/useInitialValue'\nimport useSetCursorEnd from './hooks/useSetCursorEnd'\nimport useMentionLink from './hooks/useMentionLink'\nimport useAnnotationsSync from './hooks/useAnnotationsSync'\nimport { useBlendedCategoryColor } from './hooks/useBlendedCategoryColor'\n\n// State management\nimport useAnnotationsUpload from './hooks/useAnnotationsUpload'\nimport { useFeedContext } from '../../context/FeedContext'\nimport { ActivityCategorySelect, SavedAnnotationMetadata } from '../../index'\nimport { useDetailsPanelContext } from '@shared/context'\n\nvar Delta = Quill.import('delta')\n\nconst mentionTypes = ['@', '@@', '@@@']\nexport const mentionTypeOptions = {\n '@@@': {\n id: 'task',\n },\n '@@': {\n id: 'version',\n },\n '@': {\n id: 'user',\n isCircle: true,\n },\n}\n\ninterface CommentInputProps {\n initValue: string | null\n initFiles?: any[]\n initCategory?: string | null\n onSubmit: (markdown: string, files: any[], data?: any) => Promise<void>\n isEditing?: boolean\n disabled?: boolean\n isLoading?: boolean\n isOpen: boolean\n onOpen?: () => void\n onClose?: () => void\n}\n\nconst CommentInput: FC<CommentInputProps> = ({\n initValue,\n initFiles = [],\n initCategory = null,\n onSubmit,\n isEditing,\n disabled,\n isLoading,\n isOpen,\n onOpen,\n onClose,\n}) => {\n const {\n projectName,\n entities,\n projectInfo,\n scope,\n currentTab,\n mentionSuggestionsData,\n categories,\n isGuest,\n } = useFeedContext()\n\n const { hasLicense, onPowerFeature } = useDetailsPanelContext()\n\n const {\n users: mentionUsers,\n versions: mentionVersions,\n tasks: mentionTasks,\n } = mentionSuggestionsData || {}\n\n const [initHeight, setInitHeight] = useState(88)\n const [editorValue, setEditorValue] = useState('')\n // file uploads\n const [files, setFiles] = useState(initFiles)\n const [filesUploading, setFilesUploading] = useState([])\n const [isDropping, setIsDropping] = useState(false)\n const [isSubmitting, setIsSubmitting] = useState(false)\n\n const { annotations, removeAnnotation, goToAnnotation } = useAnnotationsSync({\n entityId: entities[0]?.id,\n filesUploading,\n })\n\n // MENTION STATES\n const [mention, setMention] = useState<null | any>(null)\n const [mentionSelectedIndex, setMentionSelectedIndex] = useState(0)\n // CATEGORY STATE\n const [category, setCategory] = useState<null | string>(initCategory)\n const categoryOptions = categories.filter((cat) => cat.accessLevel >= 20)\n const categoryData = categories.find((cat) => cat.name === category)\n // Compute blended background color for category\n const blendedCategoryColor = useBlendedCategoryColor(categoryData?.color)\n // REFS\n const editorRef = useRef<any>(null)\n const editorContainerRef = useRef<HTMLDivElement>(null)\n\n const markdownRef = useRef<HTMLDivElement>(null)\n\n // if there is an initial value, set it so the editor is prefilled\n useInitialValue({\n markdownRef,\n initValue,\n setEditorValue,\n setInitHeight,\n isOpen: isOpen,\n filter: currentTab,\n })\n\n // When editing, set selection to the end of the editor\n useSetCursorEnd({ initHeight, editorRef, isEditing })\n // create a new quill format for mentions and registers it\n useMentionLink({ projectName })\n\n // focus on editor when opened\n useEffect(() => {\n if (isOpen) {\n editorRef.current?.getEditor()?.enable()\n // block autofocus if opened from an annotation\n if (annotations.length > 0 && files.length === 0) {\n return\n }\n\n editorRef.current?.focus()\n }\n // We don't set annotations or files as useEffect dependencies, because we don't want to focus\n // the input if it's already open but annotations change (e.g. are removed).\n }, [isOpen, editorRef])\n\n mentionTypes.sort((a, b) => b.length - a.length)\n\n const mentionOptions = useMemo(\n () =>\n getMentionOptions(\n mention?.type,\n {\n '@': () => getMentionUsers(mentionUsers),\n '@@': () => getMentionVersions(mentionVersions),\n '@@@': () => getMentionTasks(mentionTasks, projectInfo.taskTypes),\n },\n mention?.search,\n ),\n [mentionTasks, mentionVersions, mentionUsers, mention?.type, mention?.search],\n )\n\n // show first 5 and filter itself out\n const shownMentionOptions = mentionOptions.slice(0, 5)\n\n // triggered when a mention is selected\n const [newSelection, setNewSelection] = useState<null | number>()\n\n useEffect(() => {\n if (newSelection) {\n setNewSelection(null)\n // now we set selection to the end of the mention\n const quill = editorRef.current.getEditor()\n quill.setSelection(newSelection)\n }\n }, [newSelection])\n\n const handleSelectMention = (selectedOption: any) => {\n // get option text\n const quill = editorRef.current.getEditor()\n\n const typePrefix = mention.type // the type of mention: @, @@, @@@\n const search = typePrefix + (mention.search || '') // the full search string: @Tim\n const mentionLabel = typePrefix + selectedOption.label // the label of the mention: @Tim Bailey\n // @ts-expect-error\n const type = mentionTypeOptions[typePrefix] // the type of mention: user, version, task\n const href = `${type?.id}:${selectedOption.id}` // the href of the mention: user:user.123\n\n // get selection delta\n const selection = quill.getSelection(true)\n const selectionIndex = selection?.index || 0\n const startIndex = selectionIndex - search.length // the start index of the search\n\n // first delete the search string\n quill.deleteText(startIndex, search.length)\n\n // insert embed link\n quill.insertText(startIndex, mentionLabel, 'mention', href)\n\n const endIndex = startIndex + mentionLabel.length\n\n // insert a space after the mention\n quill.updateContents(new Delta().retain(endIndex).insert(' '))\n\n // remove single \\n after mention\n quill.updateContents(new Delta().retain(endIndex + 1).delete(1))\n\n // set selection to the end of the mention + 1\n setNewSelection(endIndex + 1)\n\n // reset mention state\n setMention(null)\n setMentionSelectedIndex(0)\n }\n\n const handleSelectChange = (option: any) => {\n handleSelectMention(option)\n }\n\n const handleChange = (content: string, delta: any, _: any, editor: any) => {\n let currentCharacter =\n (delta.ops[0] && delta.ops[0].insert) || (delta.ops[1] && delta.ops[1].insert)\n\n const tabOrEnter = currentCharacter === '\\n' || currentCharacter === '\\t'\n // find the first option\n const selectedOption = mentionOptions[mentionSelectedIndex]\n\n if (mention && tabOrEnter && selectedOption && !isGuest) {\n // get option text\n const retain = (delta.ops[0] && delta.ops[0].retain) || 0\n // prevent default\n\n // @ts-ignore\n handleSelectMention(selectedOption, retain)\n\n return\n }\n\n setEditorValue(content)\n\n const isDelete = delta.ops.length === 2 && !!delta.ops[1].delete\n\n if (!currentCharacter && isDelete) {\n currentCharacter = editor.getText(delta.ops[0].retain - 1, 1)\n }\n\n const isMention = mentionTypes.includes(currentCharacter)\n\n if (isMention) {\n const mentionIndex = delta.ops.findIndex((op: any) => 'insert' in op || 'delete' in op)\n const mention = currentCharacter\n let retain = mentionIndex === 0 ? 0 : delta.ops[mentionIndex - 1].retain\n if (isDelete) retain = retain - 1\n\n // for each mention denotation char, check if it is a mention\n // sort by length of mention denotation char\n let mentionMatch = null\n\n // loop through each mention denotation char, with longest first. First one to match is the one we want\n for (const chars of mentionTypes) {\n let isMatch = true\n // start with the last character\n if (chars.endsWith(mention)) {\n // loop through the chars backwards\n for (let i = chars.length - 1; i >= 0; i--) {\n // skip first character as that's already been checked\n if (i === 0) continue\n const char = chars[i - 1]\n const indexInDelta = retain - (chars.length - i)\n const valueCharAtIndex = editor.getText(indexInDelta, 1)\n if (valueCharAtIndex !== char) {\n isMatch = false\n break\n }\n }\n } else {\n isMatch = false\n }\n\n if (isMatch) {\n // console.log('match!!!', chars)\n mentionMatch = chars\n break\n }\n }\n\n if (mentionMatch) {\n setMention({\n type: mentionMatch,\n retain: retain,\n })\n } else {\n setMention(null)\n setMentionSelectedIndex(0)\n }\n } else {\n // get full string between mention and new delta\n // This is where SEARCH is handled\n if (mention) {\n const retain = delta.ops[0].retain\n // if space is pressed, remove mention\n if (currentCharacter === ' ' || !retain) {\n setMention(null)\n setMentionSelectedIndex(0)\n return\n }\n\n let distanceMentionToRetain = retain - mention.retain\n if (!isDelete) distanceMentionToRetain++\n const mentionFull = editor.getText(mention.retain, distanceMentionToRetain)\n const mentionSearch = mentionFull.replace(mention.type.slice(-1), '')\n // check for space in mentionFull\n if (mentionFull.includes(' ')) {\n setMention(null)\n setMentionSelectedIndex(0)\n } else {\n setMention({\n ...mention,\n search: mentionSearch?.toLowerCase(),\n })\n }\n } else {\n // just deleting any text\n const quill = editorRef.current.getEditor()\n const currentSelection = quill.getSelection(false)\n const currentFormat = quill.getFormat(currentSelection?.index, currentSelection?.length)\n if (currentFormat.mention) {\n // if format is mention, delete the whole mention\n const [lineBlock] = quill.getLine(currentSelection.index - 1) || []\n const ops = lineBlock?.cache?.delta?.ops || []\n // get last op with attributes mention: true\n const lastMentionOp = ops.reverse().find((op: any) => op.attributes?.mention)\n if (lastMentionOp) {\n const mentionLength = lastMentionOp.insert.length\n quill.deleteText(currentSelection.index - mentionLength, mentionLength)\n }\n }\n }\n }\n }\n\n const addTextToEditor = (type: string) => {\n // get editor retain\n const quill = editorRef.current.getEditor()\n\n let retain = quill.getSelection(true)?.index || 0\n\n // get character at retain\n const currentCharacter = quill.getText(retain - 1, 1)\n\n // if the current character is a character, increment retain\n const addSpace = currentCharacter !== ' ' && currentCharacter\n if (addSpace) {\n quill.insertText(retain, ' ')\n retain++\n }\n\n // This is hack AF, but it works\n typeWithDelay(quill, retain, type)\n }\n\n const handleMentionButton = (type: string) => {\n // first check if mention is already open\n if (mention) {\n const { type, retain, search = '' } = mention\n\n const quill = editorRef.current.getEditor()\n const length = type.length + search.length\n const start = retain - type.length + 1\n // delete the mention\n quill.deleteText(start, length)\n }\n\n addTextToEditor(type)\n }\n\n const handleOpenClick = () => {\n if (isOpen || disabled) return\n\n onOpen && onOpen()\n }\n\n const handleClose = () => {\n // get editor value\n const editor = editorRef.current.getEditor()\n const text = editor.getText()\n if (text.length < 2 || isEditing) {\n setEditorValue('')\n }\n\n // always close editor\n onClose && onClose()\n }\n\n const handleFileUploaded = ({ file, data }: any) => {\n const newFile = {\n id: data.id,\n name: file.name,\n mime: file.type,\n size: file.size,\n order: files.length,\n }\n\n setFiles((prev) => [...prev, newFile])\n // remove from uploading\n setFilesUploading((prev) => prev.filter((uploading: any) => uploading.name !== file.name))\n\n return newFile\n }\n\n const handleFileRemove = (id: string, name: string, isUnsavedAnnotation: boolean) => {\n if (isUnsavedAnnotation) {\n // remove from annotations (if it's an unsaved annotation)\n removeAnnotation?.(id)\n } else {\n // remove file from files\n setFiles((prev) => prev.filter((file) => file.id !== id))\n // remove from uploading\n setFilesUploading((prev) => {\n return prev.filter((file: any) => file.name !== name)\n })\n }\n }\n\n const handleFileProgress = (e: any, file: any) => {\n const progress = Math.round((e.loaded * 100) / e.total)\n if (progress !== 100) {\n const uploadProgress = {\n name: file.name,\n progress,\n type: file.type,\n order: files.length + filesUploading.length,\n }\n\n // @ts-ignore\n setFilesUploading((prev) => {\n // replace or add new progress\n const newProgress = prev.filter((name: any) => name.name !== file.name)\n return [...newProgress, uploadProgress]\n })\n }\n }\n\n // when a file is not dropped onto the comment input\n const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\n setIsDropping(false)\n // upload file\n handleFileDrop(e, projectName, handleFileProgress, handleFileUploaded)\n }\n\n const handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault()\n e.stopPropagation()\n setIsDropping(true)\n }\n\n const uploadAnnotations = useAnnotationsUpload({\n projectName,\n onSuccess: handleFileUploaded,\n })\n\n const handleSubmit = async () => {\n try {\n setIsSubmitting(true)\n // upload any annotations first\n let annotationFiles = []\n let annotationMetadata: SavedAnnotationMetadata[] = []\n\n if (annotations.length) {\n const { files, metadata } = await uploadAnnotations(annotations)\n annotationFiles = files\n annotationMetadata = metadata\n }\n\n // convert to markdown\n const [markdown] = convertToMarkdown(editorValue)\n\n // remove img query params\n const markdownParsed = parseImages(markdown)\n\n const uploadedFiles = [...files, ...annotationFiles]\n\n if ((markdownParsed || uploadedFiles.length) && onSubmit) {\n try {\n await onSubmit(markdownParsed, uploadedFiles, {\n annotations: annotationMetadata,\n category: isGuest ? null : category, // guests cannot set category (it is done by default on backend)\n })\n // only clear if onSubmit is successful\n setEditorValue('')\n setFiles([])\n } catch (error) {\n // error is handled in rtk query mutation\n return\n }\n }\n } catch (error) {\n console.error(error)\n toast.error('Something went wrong')\n } finally {\n setIsSubmitting(false)\n }\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (mention) {\n // close mention on escape\n if (e.key === 'Escape') {\n setMention(null)\n setMentionSelectedIndex(0)\n return\n }\n\n // add top search of mention\n if (mention && e.key === 'Tab') {\n // we handle this in the onChange\n }\n\n const arrowDirection = e.key === 'ArrowUp' ? -1 : e.key === 'ArrowDown' ? 1 : 0\n\n if (arrowDirection) {\n // navigate through mentions\n e.preventDefault()\n let newIndex = mentionSelectedIndex + arrowDirection\n if (newIndex < 0) newIndex = shownMentionOptions.length - 1\n if (newIndex >= shownMentionOptions.length) newIndex = 0\n setMentionSelectedIndex(newIndex)\n }\n\n if (e.key === 'Enter') {\n // we handle this in the onChange\n }\n }\n\n if (e.key === 'Enter' && (e.ctrlKey || e.metaKey)) {\n handleSubmit()\n }\n\n if (e.key === 'Escape') {\n handleClose()\n }\n }\n\n let quillMinHeight: number | undefined = isOpen ? initHeight + 41 : 44\n if (isEditing) quillMinHeight = undefined\n\n // QUILL CONFIG\n const modules = useMemo(\n () =>\n getModules({\n imageUploader: {\n projectName,\n onUpload: handleFileUploaded,\n onUploadProgress: handleFileProgress,\n },\n }),\n [projectName, setFiles, setFilesUploading],\n )\n\n const allFiles = [...annotations, ...(files || []), ...filesUploading].sort(\n (a, b) => a.order - b.order,\n )\n const compactGrid = allFiles.length > 6\n\n // disable version mentions for folders\n let mentionsError = null\n if (entities.length && entities[0].entityType === 'folder') {\n if (mention?.type === '@@') {\n mentionsError = 'Version mentions are disabled for folders'\n }\n }\n\n const getCommentPlaceholder = (isOpen?: boolean) => {\n if (disabled) {\n if (isGuest) return 'You do not have permission to comment.'\n return 'Commenting is disabled across multiple projects.'\n }\n\n if (isGuest || !isOpen) return 'Leave a comment'\n\n return 'Comment or mention with @user, @@version, @@@task...'\n }\n\n return (\n <>\n <Styled.AutoHeight\n className={clsx('comment-container', { isOpen, isEditing })}\n onDragOver={handleDragOver}\n onDragLeave={() => setIsDropping(false)}\n onDrop={handleDrop}\n onClick={() => setIsDropping(false)}\n onKeyDown={(e) => e.stopPropagation()}\n >\n <Styled.Comment\n className={clsx('block-shortcuts', {\n isOpen,\n isClosed: !isOpen || disabled,\n isEditing,\n isDropping,\n disabled,\n isLoading,\n isSubmitting,\n category: !!category && !isGuest,\n })}\n onKeyDown={handleKeyDown}\n onClick={handleOpenClick}\n $categoryPrimary={categoryData?.color}\n $categoryTertiary={blendedCategoryColor.primary}\n $categorySecondary={blendedCategoryColor.secondary}\n >\n <Styled.Markdown ref={markdownRef}>\n {/* this is purely used to translate the markdown into html for Editor */}\n <InputMarkdownConvert typeOptions={mentionTypeOptions} initValue={initValue} />\n </Styled.Markdown>\n\n {/* file uploads */}\n {isOpen && (\n <FilesGrid\n files={allFiles}\n isCompact={compactGrid}\n onRemove={handleFileRemove}\n style={{ borderBottom: '1px solid var(--md-sys-color-outline-variant)' }}\n projectName={projectName}\n onAnnotationClick={goToAnnotation}\n />\n )}\n {isOpen && !disabled ? (\n <QuillListStyles ref={editorContainerRef}>\n {!isGuest && (\n <ActivityCategorySelect\n value={category}\n categories={categoryOptions}\n onChange={(c) => setCategory(c)}\n isCompact={isEditing}\n hasPowerpack={hasLicense}\n onPowerFeature={onPowerFeature}\n style={{\n position: isEditing ? 'relative' : 'absolute',\n left: 4,\n top: isEditing ? 0 : 4,\n }}\n />\n )}\n\n <ReactQuill\n theme=\"snow\"\n style={{ minHeight: quillMinHeight, maxHeight: 300 }}\n ref={editorRef}\n value={editorValue}\n onChange={handleChange}\n readOnly={!isOpen}\n placeholder={getCommentPlaceholder(true)}\n modules={modules}\n formats={quillFormats}\n />\n </QuillListStyles>\n ) : (\n <Styled.Placeholder>{getCommentPlaceholder()}</Styled.Placeholder>\n )}\n\n <Styled.Footer>\n {!isGuest && (\n <Styled.Buttons>\n {/* mention a user */}\n <Button\n icon=\"person\"\n variant=\"text\"\n onClick={() => handleMentionButton('@')}\n data-tooltip={'Mention user'}\n data-shortcut={'@'}\n />\n {/* mention a version */}\n <Button\n icon=\"layers\"\n variant=\"text\"\n onClick={() => handleMentionButton('@@')}\n data-tooltip={'Mention version'}\n data-shortcut={'@@'}\n />\n {/* mention a task */}\n <Button\n icon=\"check_circle\"\n variant=\"text\"\n onClick={() => handleMentionButton('@@@')}\n data-tooltip={'Mention task'}\n data-shortcut={'@@@'}\n />\n </Styled.Buttons>\n )}\n <Styled.Buttons style={{ marginLeft: 'auto' }}>\n {isEditing && (\n <Button variant=\"text\" onClick={handleClose}>\n Cancel\n </Button>\n )}\n <SaveButton\n label={isEditing ? 'Save' : 'Comment'}\n className=\"comment\"\n active={!!editorValue || !!files.length}\n onClick={handleSubmit}\n disabled={isLoading}\n />\n </Styled.Buttons>\n </Styled.Footer>\n\n <Styled.Dropzone className={clsx({ show: isDropping && isOpen })}>\n <Icon icon=\"cloud_upload\" />\n </Styled.Dropzone>\n </Styled.Comment>\n <CommentMentionSelect\n mention={mention}\n options={shownMentionOptions}\n onChange={handleSelectChange}\n types={mentionTypes}\n // @ts-ignore\n config={mentionTypeOptions[mention?.type]}\n noneFound={!shownMentionOptions.length && mention?.search}\n noneFoundAtAll={!shownMentionOptions.length && !mention?.search}\n selectedIndex={mentionSelectedIndex}\n // @ts-ignore\n error={mentionsError}\n isGuest={isGuest}\n />\n </Styled.AutoHeight>\n </>\n )\n}\n\nexport default CommentInput\n"],"names":["Delta","Quill","mentionTypes","mentionTypeOptions","CommentInput","initValue","initFiles","initCategory","onSubmit","isEditing","disabled","isLoading","isOpen","onOpen","onClose","projectName","entities","projectInfo","scope","currentTab","mentionSuggestionsData","categories","isGuest","useFeedContext","hasLicense","onPowerFeature","useDetailsPanelContext","mentionUsers","mentionVersions","mentionTasks","initHeight","setInitHeight","useState","editorValue","setEditorValue","files","setFiles","filesUploading","setFilesUploading","isDropping","setIsDropping","isSubmitting","setIsSubmitting","annotations","removeAnnotation","goToAnnotation","useAnnotationsSync","_a","mention","setMention","mentionSelectedIndex","setMentionSelectedIndex","category","setCategory","categoryOptions","cat","categoryData","blendedCategoryColor","useBlendedCategoryColor","editorRef","useRef","editorContainerRef","markdownRef","useInitialValue","useSetCursorEnd","useMentionLink","useEffect","_b","_c","a","b","mentionOptions","useMemo","getMentionOptions","getMentionUsers","getMentionVersions","getMentionTasks","shownMentionOptions","newSelection","setNewSelection","handleSelectMention","selectedOption","quill","typePrefix","search","mentionLabel","type","href","selection","startIndex","endIndex","handleSelectChange","option","handleChange","content","delta","_","editor","currentCharacter","tabOrEnter","isDelete","mentionIndex","op","retain","mentionMatch","chars","isMatch","i","char","indexInDelta","distanceMentionToRetain","mentionFull","mentionSearch","currentSelection","lineBlock","lastMentionOp","mentionLength","addTextToEditor","typeWithDelay","handleMentionButton","length","start","handleOpenClick","handleClose","handleFileUploaded","file","data","newFile","prev","uploading","handleFileRemove","id","name","isUnsavedAnnotation","handleFileProgress","progress","uploadProgress","handleDrop","handleFileDrop","handleDragOver","uploadAnnotations","useAnnotationsUpload","handleSubmit","annotationFiles","annotationMetadata","metadata","markdown","convertToMarkdown","markdownParsed","parseImages","uploadedFiles","error","toast","handleKeyDown","arrowDirection","newIndex","quillMinHeight","modules","getModules","allFiles","compactGrid","mentionsError","getCommentPlaceholder","jsx","Fragment","jsxs","Styled.AutoHeight","clsx","Styled.Comment","Styled.Markdown","InputMarkdownConvert","FilesGrid","QuillListStyles","ActivityCategorySelect","c","ReactQuill","quillFormats","Styled.Placeholder","Styled.Footer","Styled.Buttons","Button","SaveButton","Styled.Dropzone","Icon","CommentMentionSelect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CommentInput.cjs.js","sources":["../../../../../../../src/containers/Feed/components/CommentInput/CommentInput.tsx"],"sourcesContent":["// React and related hooks\nimport React, { FC, useEffect, useMemo, useRef, useState } from 'react'\n\n// Third-party libraries\nimport clsx from 'clsx'\nimport { toast } from 'react-toastify'\nimport ReactQuill, { Quill } from 'react-quill-ayon'\n\n// Components\nimport { Button, Icon, SaveButton } from '@ynput/ayon-react-components'\nimport CommentMentionSelect from '../CommentMentionSelect/CommentMentionSelect'\nimport InputMarkdownConvert from './InputMarkdownConvert'\nimport FilesGrid from '../FilesGrid'\n\n// Styled components\nimport * as Styled from './CommentInput.styled'\nimport { QuillListStyles } from '../../../../components/QuillListStyles'\n\n// Helpers and utilities\nimport getMentionOptions from '../../mentionHelpers/getMentionOptions'\nimport getMentionUsers from '../../mentionHelpers/getMentionUsers'\nimport getMentionTasks from '../../mentionHelpers/getMentionTasks'\nimport getMentionVersions from '../../mentionHelpers/getMentionVersions'\nimport { convertToMarkdown } from './quillToMarkdown'\nimport { handleFileDrop, parseImages, typeWithDelay } from './helpers'\nimport { getModules, quillFormats } from './modules'\n\n// Hooks\nimport useInitialValue from './hooks/useInitialValue'\nimport useSetCursorEnd from './hooks/useSetCursorEnd'\nimport useMentionLink from './hooks/useMentionLink'\nimport useAnnotationsSync from './hooks/useAnnotationsSync'\nimport { useBlendedCategoryColor } from './hooks/useBlendedCategoryColor'\n\n// State management\nimport useAnnotationsUpload from './hooks/useAnnotationsUpload'\nimport { useFeedContext } from '../../context/FeedContext'\nimport { ActivityCategorySelect, isCategoryHidden, SavedAnnotationMetadata } from '../../index'\nimport { useDetailsPanelContext } from '@shared/context'\n\nvar Delta = Quill.import('delta')\n\nconst mentionTypes = ['@', '@@', '@@@']\nexport const mentionTypeOptions = {\n '@@@': {\n id: 'task',\n },\n '@@': {\n id: 'version',\n },\n '@': {\n id: 'user',\n isCircle: true,\n },\n}\n\ninterface CommentInputProps {\n initValue: string | null\n initFiles?: any[]\n initCategory?: string | null\n onSubmit: (markdown: string, files: any[], data?: any) => Promise<void>\n isEditing?: boolean\n disabled?: boolean\n isLoading?: boolean\n isOpen: boolean\n onOpen?: () => void\n onClose?: () => void\n}\n\nconst CommentInput: FC<CommentInputProps> = ({\n initValue,\n initFiles = [],\n initCategory = null,\n onSubmit,\n isEditing,\n disabled,\n isLoading,\n isOpen,\n onOpen,\n onClose,\n}) => {\n const {\n projectName,\n entities,\n projectInfo,\n scope,\n currentTab,\n mentionSuggestionsData,\n categories,\n isGuest,\n } = useFeedContext()\n\n const { hasLicense, onPowerFeature, user } = useDetailsPanelContext()\n const isUser = !user?.data?.isAdmin && !user?.data?.isManager\n\n const {\n users: mentionUsers,\n versions: mentionVersions,\n tasks: mentionTasks,\n } = mentionSuggestionsData || {}\n\n const [initHeight, setInitHeight] = useState(88)\n const [editorValue, setEditorValue] = useState('')\n // file uploads\n const [files, setFiles] = useState(initFiles)\n const [filesUploading, setFilesUploading] = useState([])\n const [isDropping, setIsDropping] = useState(false)\n const [isSubmitting, setIsSubmitting] = useState(false)\n\n const { annotations, removeAnnotation, goToAnnotation } = useAnnotationsSync({\n entityId: entities[0]?.id,\n filesUploading,\n })\n\n // MENTION STATES\n const [mention, setMention] = useState<null | any>(null)\n const [mentionSelectedIndex, setMentionSelectedIndex] = useState(0)\n // CATEGORY STATE\n const [category, setCategory] = useState<null | string>(initCategory)\n const categoryOptions = categories.filter((cat) => cat.accessLevel >= 20)\n const categoryData = categories.find((cat) => cat.name === category)\n // Compute blended background color for category\n const blendedCategoryColor = useBlendedCategoryColor(categoryData?.color)\n // REFS\n const editorRef = useRef<any>(null)\n const editorContainerRef = useRef<HTMLDivElement>(null)\n\n const markdownRef = useRef<HTMLDivElement>(null)\n\n // if there is an initial value, set it so the editor is prefilled\n useInitialValue({\n markdownRef,\n initValue,\n setEditorValue,\n setInitHeight,\n isOpen: isOpen,\n filter: currentTab,\n })\n\n // When editing, set selection to the end of the editor\n useSetCursorEnd({ initHeight, editorRef, isEditing })\n // create a new quill format for mentions and registers it\n useMentionLink({ projectName })\n\n // focus on editor when opened\n useEffect(() => {\n if (isOpen) {\n editorRef.current?.getEditor()?.enable()\n // block autofocus if opened from an annotation\n if (annotations.length > 0 && files.length === 0) {\n return\n }\n\n editorRef.current?.focus()\n }\n // We don't set annotations or files as useEffect dependencies, because we don't want to focus\n // the input if it's already open but annotations change (e.g. are removed).\n }, [isOpen, editorRef])\n\n mentionTypes.sort((a, b) => b.length - a.length)\n\n const mentionOptions = useMemo(\n () =>\n getMentionOptions(\n mention?.type,\n {\n '@': () => getMentionUsers(mentionUsers),\n '@@': () => getMentionVersions(mentionVersions),\n '@@@': () => getMentionTasks(mentionTasks, projectInfo.taskTypes),\n },\n mention?.search,\n ),\n [mentionTasks, mentionVersions, mentionUsers, mention?.type, mention?.search],\n )\n\n // show first 5 and filter itself out\n const shownMentionOptions = mentionOptions.slice(0, 5)\n\n // triggered when a mention is selected\n const [newSelection, setNewSelection] = useState<null | number>()\n\n useEffect(() => {\n if (newSelection) {\n setNewSelection(null)\n // now we set selection to the end of the mention\n const quill = editorRef.current.getEditor()\n quill.setSelection(newSelection)\n }\n }, [newSelection])\n\n const handleSelectMention = (selectedOption: any) => {\n // get option text\n const quill = editorRef.current.getEditor()\n\n const typePrefix = mention.type // the type of mention: @, @@, @@@\n const search = typePrefix + (mention.search || '') // the full search string: @Tim\n const mentionLabel = typePrefix + selectedOption.label // the label of the mention: @Tim Bailey\n // @ts-expect-error\n const type = mentionTypeOptions[typePrefix] // the type of mention: user, version, task\n const href = `${type?.id}:${selectedOption.id}` // the href of the mention: user:user.123\n\n // get selection delta\n const selection = quill.getSelection(true)\n const selectionIndex = selection?.index || 0\n const startIndex = selectionIndex - search.length // the start index of the search\n\n // first delete the search string\n quill.deleteText(startIndex, search.length)\n\n // insert embed link\n quill.insertText(startIndex, mentionLabel, 'mention', href)\n\n const endIndex = startIndex + mentionLabel.length\n\n // insert a space after the mention\n quill.updateContents(new Delta().retain(endIndex).insert(' '))\n\n // remove single \\n after mention\n quill.updateContents(new Delta().retain(endIndex + 1).delete(1))\n\n // set selection to the end of the mention + 1\n setNewSelection(endIndex + 1)\n\n // reset mention state\n setMention(null)\n setMentionSelectedIndex(0)\n }\n\n const handleSelectChange = (option: any) => {\n handleSelectMention(option)\n }\n\n const handleChange = (content: string, delta: any, _: any, editor: any) => {\n let currentCharacter =\n (delta.ops[0] && delta.ops[0].insert) || (delta.ops[1] && delta.ops[1].insert)\n\n const tabOrEnter = currentCharacter === '\\n' || currentCharacter === '\\t'\n // find the first option\n const selectedOption = mentionOptions[mentionSelectedIndex]\n\n if (mention && tabOrEnter && selectedOption && !isGuest) {\n // get option text\n const retain = (delta.ops[0] && delta.ops[0].retain) || 0\n // prevent default\n\n // @ts-ignore\n handleSelectMention(selectedOption, retain)\n\n return\n }\n\n setEditorValue(content)\n\n const isDelete = delta.ops.length === 2 && !!delta.ops[1].delete\n\n if (!currentCharacter && isDelete) {\n currentCharacter = editor.getText(delta.ops[0].retain - 1, 1)\n }\n\n const isMention = mentionTypes.includes(currentCharacter)\n\n if (isMention) {\n const mentionIndex = delta.ops.findIndex((op: any) => 'insert' in op || 'delete' in op)\n const mention = currentCharacter\n let retain = mentionIndex === 0 ? 0 : delta.ops[mentionIndex - 1].retain\n if (isDelete) retain = retain - 1\n\n // for each mention denotation char, check if it is a mention\n // sort by length of mention denotation char\n let mentionMatch = null\n\n // loop through each mention denotation char, with longest first. First one to match is the one we want\n for (const chars of mentionTypes) {\n let isMatch = true\n // start with the last character\n if (chars.endsWith(mention)) {\n // loop through the chars backwards\n for (let i = chars.length - 1; i >= 0; i--) {\n // skip first character as that's already been checked\n if (i === 0) continue\n const char = chars[i - 1]\n const indexInDelta = retain - (chars.length - i)\n const valueCharAtIndex = editor.getText(indexInDelta, 1)\n if (valueCharAtIndex !== char) {\n isMatch = false\n break\n }\n }\n } else {\n isMatch = false\n }\n\n if (isMatch) {\n // console.log('match!!!', chars)\n mentionMatch = chars\n break\n }\n }\n\n if (mentionMatch) {\n setMention({\n type: mentionMatch,\n retain: retain,\n })\n } else {\n setMention(null)\n setMentionSelectedIndex(0)\n }\n } else {\n // get full string between mention and new delta\n // This is where SEARCH is handled\n if (mention) {\n const retain = delta.ops[0].retain\n // if space is pressed, remove mention\n if (currentCharacter === ' ' || !retain) {\n setMention(null)\n setMentionSelectedIndex(0)\n return\n }\n\n let distanceMentionToRetain = retain - mention.retain\n if (!isDelete) distanceMentionToRetain++\n const mentionFull = editor.getText(mention.retain, distanceMentionToRetain)\n const mentionSearch = mentionFull.replace(mention.type.slice(-1), '')\n // check for space in mentionFull\n if (mentionFull.includes(' ')) {\n setMention(null)\n setMentionSelectedIndex(0)\n } else {\n setMention({\n ...mention,\n search: mentionSearch?.toLowerCase(),\n })\n }\n } else {\n // just deleting any text\n const quill = editorRef.current.getEditor()\n const currentSelection = quill.getSelection(false)\n const currentFormat = quill.getFormat(currentSelection?.index, currentSelection?.length)\n if (currentFormat.mention) {\n // if format is mention, delete the whole mention\n const [lineBlock] = quill.getLine(currentSelection.index - 1) || []\n const ops = lineBlock?.cache?.delta?.ops || []\n // get last op with attributes mention: true\n const lastMentionOp = ops.reverse().find((op: any) => op.attributes?.mention)\n if (lastMentionOp) {\n const mentionLength = lastMentionOp.insert.length\n quill.deleteText(currentSelection.index - mentionLength, mentionLength)\n }\n }\n }\n }\n }\n\n const addTextToEditor = (type: string) => {\n // get editor retain\n const quill = editorRef.current.getEditor()\n\n let retain = quill.getSelection(true)?.index || 0\n\n // get character at retain\n const currentCharacter = quill.getText(retain - 1, 1)\n\n // if the current character is a character, increment retain\n const addSpace = currentCharacter !== ' ' && currentCharacter\n if (addSpace) {\n quill.insertText(retain, ' ')\n retain++\n }\n\n // This is hack AF, but it works\n typeWithDelay(quill, retain, type)\n }\n\n const handleMentionButton = (type: string) => {\n // first check if mention is already open\n if (mention) {\n const { type, retain, search = '' } = mention\n\n const quill = editorRef.current.getEditor()\n const length = type.length + search.length\n const start = retain - type.length + 1\n // delete the mention\n quill.deleteText(start, length)\n }\n\n addTextToEditor(type)\n }\n\n const handleOpenClick = () => {\n if (isOpen || disabled) return\n\n onOpen && onOpen()\n }\n\n const handleClose = () => {\n // get editor value\n const editor = editorRef.current.getEditor()\n const text = editor.getText()\n if (text.length < 2 || isEditing) {\n setEditorValue('')\n }\n\n // always close editor\n onClose && onClose()\n }\n\n const handleFileUploaded = ({ file, data }: any) => {\n const newFile = {\n id: data.id,\n name: file.name,\n mime: file.type,\n size: file.size,\n order: files.length,\n }\n\n setFiles((prev) => [...prev, newFile])\n // remove from uploading\n setFilesUploading((prev) => prev.filter((uploading: any) => uploading.name !== file.name))\n\n return newFile\n }\n\n const handleFileRemove = (id: string, name: string, isUnsavedAnnotation: boolean) => {\n if (isUnsavedAnnotation) {\n // remove from annotations (if it's an unsaved annotation)\n removeAnnotation?.(id)\n } else {\n // remove file from files\n setFiles((prev) => prev.filter((file) => file.id !== id))\n // remove from uploading\n setFilesUploading((prev) => {\n return prev.filter((file: any) => file.name !== name)\n })\n }\n }\n\n const handleFileProgress = (e: any, file: any) => {\n const progress = Math.round((e.loaded * 100) / e.total)\n if (progress !== 100) {\n const uploadProgress = {\n name: file.name,\n progress,\n type: file.type,\n order: files.length + filesUploading.length,\n }\n\n // @ts-ignore\n setFilesUploading((prev) => {\n // replace or add new progress\n const newProgress = prev.filter((name: any) => name.name !== file.name)\n return [...newProgress, uploadProgress]\n })\n }\n }\n\n // when a file is not dropped onto the comment input\n const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\n setIsDropping(false)\n // upload file\n handleFileDrop(e, projectName, handleFileProgress, handleFileUploaded)\n }\n\n const handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault()\n e.stopPropagation()\n setIsDropping(true)\n }\n\n const uploadAnnotations = useAnnotationsUpload({\n projectName,\n onSuccess: handleFileUploaded,\n })\n\n const handleSubmit = async () => {\n try {\n setIsSubmitting(true)\n // upload any annotations first\n let annotationFiles = []\n let annotationMetadata: SavedAnnotationMetadata[] = []\n\n if (annotations.length) {\n const { files, metadata } = await uploadAnnotations(annotations)\n annotationFiles = files\n annotationMetadata = metadata\n }\n\n // convert to markdown\n const [markdown] = convertToMarkdown(editorValue)\n\n // remove img query params\n const markdownParsed = parseImages(markdown)\n\n const uploadedFiles = [...files, ...annotationFiles]\n\n if ((markdownParsed || uploadedFiles.length) && onSubmit) {\n try {\n await onSubmit(markdownParsed, uploadedFiles, {\n annotations: annotationMetadata,\n category: isGuest ? null : category, // guests cannot set category (it is done by default on backend)\n })\n // only clear if onSubmit is successful\n setEditorValue('')\n setFiles([])\n } catch (error) {\n // error is handled in rtk query mutation\n return\n }\n }\n } catch (error) {\n console.error(error)\n toast.error('Something went wrong')\n } finally {\n setIsSubmitting(false)\n }\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (mention) {\n // close mention on escape\n if (e.key === 'Escape') {\n setMention(null)\n setMentionSelectedIndex(0)\n return\n }\n\n // add top search of mention\n if (mention && e.key === 'Tab') {\n // we handle this in the onChange\n }\n\n const arrowDirection = e.key === 'ArrowUp' ? -1 : e.key === 'ArrowDown' ? 1 : 0\n\n if (arrowDirection) {\n // navigate through mentions\n e.preventDefault()\n let newIndex = mentionSelectedIndex + arrowDirection\n if (newIndex < 0) newIndex = shownMentionOptions.length - 1\n if (newIndex >= shownMentionOptions.length) newIndex = 0\n setMentionSelectedIndex(newIndex)\n }\n\n if (e.key === 'Enter') {\n // we handle this in the onChange\n }\n }\n\n if (e.key === 'Enter' && (e.ctrlKey || e.metaKey)) {\n handleSubmit()\n }\n\n if (e.key === 'Escape') {\n handleClose()\n }\n }\n\n let quillMinHeight: number | undefined = isOpen ? initHeight + 41 : 44\n if (isEditing) quillMinHeight = undefined\n\n // QUILL CONFIG\n const modules = useMemo(\n () =>\n getModules({\n imageUploader: {\n projectName,\n onUpload: handleFileUploaded,\n onUploadProgress: handleFileProgress,\n },\n }),\n [projectName, setFiles, setFilesUploading],\n )\n\n const allFiles = [...annotations, ...(files || []), ...filesUploading].sort(\n (a, b) => a.order - b.order,\n )\n const compactGrid = allFiles.length > 3\n\n // disable version mentions for folders\n let mentionsError = null\n if (entities.length && entities[0].entityType === 'folder') {\n if (mention?.type === '@@') {\n mentionsError = 'Version mentions are disabled for folders'\n }\n }\n\n const getCommentPlaceholder = (isOpen?: boolean) => {\n if (disabled) {\n if (isGuest) return 'You do not have permission to comment.'\n return 'Commenting is disabled across multiple projects.'\n }\n\n if (isGuest || !isOpen) return 'Leave a comment'\n\n return 'Comment or mention with @user, @@version, @@@task...'\n }\n\n return (\n <>\n <Styled.AutoHeight\n className={clsx('comment-container', { isOpen, isEditing })}\n onDragOver={handleDragOver}\n onDragLeave={() => setIsDropping(false)}\n onDrop={handleDrop}\n onClick={() => setIsDropping(false)}\n onKeyDown={(e) => e.stopPropagation()}\n >\n <Styled.Comment\n className={clsx('block-shortcuts', {\n isOpen,\n isClosed: !isOpen || disabled,\n isEditing,\n isDropping,\n disabled,\n isLoading,\n isSubmitting,\n category: !!category && !isGuest,\n })}\n onKeyDown={handleKeyDown}\n onClick={handleOpenClick}\n $categoryPrimary={categoryData?.color}\n $categoryTertiary={blendedCategoryColor.primary}\n $categorySecondary={blendedCategoryColor.secondary}\n >\n <Styled.Markdown ref={markdownRef}>\n {/* this is purely used to translate the markdown into html for Editor */}\n <InputMarkdownConvert typeOptions={mentionTypeOptions} initValue={initValue} />\n </Styled.Markdown>\n\n {/* file uploads */}\n {isOpen && (\n <FilesGrid\n files={allFiles}\n isCompact={compactGrid || isEditing}\n onRemove={handleFileRemove}\n projectName={projectName}\n onAnnotationClick={goToAnnotation}\n style={{\n borderBottom: '1px solid var(--md-sys-color-outline-variant)',\n height: '100%',\n }}\n isEditing\n pt={{\n file: {\n style: {\n height: isEditing ? 70 : undefined,\n },\n },\n }}\n />\n )}\n {isOpen && !disabled ? (\n <QuillListStyles ref={editorContainerRef}>\n {!isGuest && (\n <ActivityCategorySelect\n value={category}\n categories={categoryOptions}\n onChange={(c) => setCategory(c)}\n isCompact={isEditing}\n hasPowerpack={hasLicense}\n onPowerFeature={onPowerFeature}\n isHidden={isCategoryHidden(categoryOptions, { isGuest, isUser })}\n style={{\n position: isEditing ? 'relative' : 'absolute',\n left: 4,\n top: isEditing ? 0 : 4,\n }}\n />\n )}\n\n <ReactQuill\n theme=\"snow\"\n style={{ minHeight: quillMinHeight, maxHeight: 300 }}\n ref={editorRef}\n value={editorValue}\n onChange={handleChange}\n readOnly={!isOpen}\n placeholder={getCommentPlaceholder(true)}\n modules={modules}\n formats={quillFormats}\n />\n </QuillListStyles>\n ) : (\n <Styled.Placeholder>{getCommentPlaceholder()}</Styled.Placeholder>\n )}\n\n <Styled.Footer>\n {!isGuest && (\n <Styled.Buttons>\n {/* mention a user */}\n <Button\n icon=\"person\"\n variant=\"text\"\n onClick={() => handleMentionButton('@')}\n data-tooltip={'Mention user'}\n data-shortcut={'@'}\n />\n {/* mention a version */}\n <Button\n icon=\"layers\"\n variant=\"text\"\n onClick={() => handleMentionButton('@@')}\n data-tooltip={'Mention version'}\n data-shortcut={'@@'}\n />\n {/* mention a task */}\n <Button\n icon=\"check_circle\"\n variant=\"text\"\n onClick={() => handleMentionButton('@@@')}\n data-tooltip={'Mention task'}\n data-shortcut={'@@@'}\n />\n </Styled.Buttons>\n )}\n <Styled.Buttons style={{ marginLeft: 'auto' }}>\n {isEditing && (\n <Button variant=\"text\" onClick={handleClose}>\n Cancel\n </Button>\n )}\n <SaveButton\n label={isEditing ? 'Save' : 'Comment'}\n className=\"comment\"\n active={!!editorValue || !!files.length}\n onClick={handleSubmit}\n disabled={isLoading}\n />\n </Styled.Buttons>\n </Styled.Footer>\n\n <Styled.Dropzone className={clsx({ show: isDropping && isOpen })}>\n <Icon icon=\"cloud_upload\" />\n </Styled.Dropzone>\n </Styled.Comment>\n <CommentMentionSelect\n mention={mention}\n options={shownMentionOptions}\n onChange={handleSelectChange}\n types={mentionTypes}\n // @ts-ignore\n config={mentionTypeOptions[mention?.type]}\n noneFound={!shownMentionOptions.length && mention?.search}\n noneFoundAtAll={!shownMentionOptions.length && !mention?.search}\n selectedIndex={mentionSelectedIndex}\n // @ts-ignore\n error={mentionsError}\n isGuest={isGuest}\n />\n </Styled.AutoHeight>\n </>\n )\n}\n\nexport default CommentInput\n"],"names":["Delta","Quill","mentionTypes","mentionTypeOptions","CommentInput","initValue","initFiles","initCategory","onSubmit","isEditing","disabled","isLoading","isOpen","onOpen","onClose","projectName","entities","projectInfo","scope","currentTab","mentionSuggestionsData","categories","isGuest","useFeedContext","hasLicense","onPowerFeature","user","useDetailsPanelContext","isUser","_a","_b","mentionUsers","mentionVersions","mentionTasks","initHeight","setInitHeight","useState","editorValue","setEditorValue","files","setFiles","filesUploading","setFilesUploading","isDropping","setIsDropping","isSubmitting","setIsSubmitting","annotations","removeAnnotation","goToAnnotation","useAnnotationsSync","_c","mention","setMention","mentionSelectedIndex","setMentionSelectedIndex","category","setCategory","categoryOptions","cat","categoryData","blendedCategoryColor","useBlendedCategoryColor","editorRef","useRef","editorContainerRef","markdownRef","useInitialValue","useSetCursorEnd","useMentionLink","useEffect","a","b","mentionOptions","useMemo","getMentionOptions","getMentionUsers","getMentionVersions","getMentionTasks","shownMentionOptions","newSelection","setNewSelection","handleSelectMention","selectedOption","quill","typePrefix","search","mentionLabel","type","href","selection","startIndex","endIndex","handleSelectChange","option","handleChange","content","delta","_","editor","currentCharacter","tabOrEnter","isDelete","mentionIndex","op","retain","mentionMatch","chars","isMatch","i","char","indexInDelta","distanceMentionToRetain","mentionFull","mentionSearch","currentSelection","lineBlock","lastMentionOp","mentionLength","addTextToEditor","typeWithDelay","handleMentionButton","length","start","handleOpenClick","handleClose","handleFileUploaded","file","data","newFile","prev","uploading","handleFileRemove","id","name","isUnsavedAnnotation","handleFileProgress","progress","uploadProgress","handleDrop","handleFileDrop","handleDragOver","uploadAnnotations","useAnnotationsUpload","handleSubmit","annotationFiles","annotationMetadata","metadata","markdown","convertToMarkdown","markdownParsed","parseImages","uploadedFiles","error","toast","handleKeyDown","arrowDirection","newIndex","quillMinHeight","modules","getModules","allFiles","compactGrid","mentionsError","getCommentPlaceholder","jsx","Fragment","jsxs","Styled.AutoHeight","clsx","Styled.Comment","Styled.Markdown","InputMarkdownConvert","FilesGrid","QuillListStyles","ActivityCategorySelect","c","isCategoryHidden","ReactQuill","quillFormats","Styled.Placeholder","Styled.Footer","Styled.Buttons","Button","SaveButton","Styled.Dropzone","Icon","CommentMentionSelect"],"mappings":"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"}
|