synapse-react-client 4.0.29 → 4.0.31
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/SWC.index.d.ts +4 -0
- package/dist/SWC.index.d.ts.map +1 -1
- package/dist/SWC.index.js +2 -1
- package/dist/SWC.index.js.map +1 -1
- package/dist/assets/illustrations/curie_avatar.svg +52 -0
- package/dist/assets/illustrations/curie_avatar_head.js +91 -0
- package/dist/assets/illustrations/curie_avatar_head.js.map +1 -0
- package/dist/assets/illustrations/curie_avatar_head.svg +21 -0
- package/dist/assets/illustrations/discussions_illustration2.js +96 -0
- package/dist/assets/illustrations/discussions_illustration2.js.map +1 -0
- package/dist/assets/illustrations/discussions_illustration2.svg +17 -0
- package/dist/assets/illustrations/index.d.ts +3 -0
- package/dist/assets/illustrations/index.d.ts.map +1 -1
- package/dist/assets/illustrations/index.js +34 -32
- package/dist/assets/illustrations/index.js.map +1 -1
- package/dist/assets/mui_components/CurieAvatarHead.d.ts +5 -0
- package/dist/assets/mui_components/CurieAvatarHead.d.ts.map +1 -0
- package/dist/assets/mui_components/CurieAvatarHead.js +17 -0
- package/dist/assets/mui_components/CurieAvatarHead.js.map +1 -0
- package/dist/assets/themed_icons/Model.d.ts +3 -0
- package/dist/assets/themed_icons/Model.d.ts.map +1 -0
- package/dist/assets/themed_icons/Model.js +31 -0
- package/dist/assets/themed_icons/Model.js.map +1 -0
- package/dist/assets/themed_icons/index.d.ts +2 -1
- package/dist/assets/themed_icons/index.d.ts.map +1 -1
- package/dist/assets/themed_icons/index.js +19 -18
- package/dist/components/ChallengeDataDownload/ChallengeDataDownload.d.ts.map +1 -1
- package/dist/components/ChallengeDataDownload/ChallengeDataDownload.js +49 -39
- package/dist/components/ChallengeDataDownload/ChallengeDataDownload.js.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.js +46 -45
- package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
- package/dist/components/DataGrid/utils/DataGridUtils.js +1 -1
- package/dist/components/DataGrid/utils/DataGridUtils.js.map +1 -1
- package/dist/components/EntityFinder/EntityFinder.js +127 -127
- package/dist/components/EntityFinder/EntityFinder.js.map +1 -1
- package/dist/components/EntityFinder/details/view/DetailsView.js +53 -53
- package/dist/components/EntitySidebar/EntitySidebar.css +1 -1
- package/dist/components/EntitySidebar/EntitySidebar.module.js +11 -11
- package/dist/components/EntitySidebar/EntitySidebar.module.js.map +1 -1
- package/dist/components/EntitySidebar/EntitySidebar.module.scss +2 -2
- package/dist/components/EntityTreeTable/EntityTreeTable.d.ts +7 -0
- package/dist/components/EntityTreeTable/EntityTreeTable.d.ts.map +1 -1
- package/dist/components/EntityTreeTable/EntityTreeTable.js +24 -20
- package/dist/components/EntityTreeTable/EntityTreeTable.js.map +1 -1
- package/dist/components/EntityTreeTable/components/CheckboxCell.d.ts +4 -0
- package/dist/components/EntityTreeTable/components/CheckboxCell.d.ts.map +1 -0
- package/dist/components/EntityTreeTable/components/CheckboxCell.js +43 -0
- package/dist/components/EntityTreeTable/components/CheckboxCell.js.map +1 -0
- package/dist/components/EntityTreeTable/components/EntityNameCell.d.ts.map +1 -1
- package/dist/components/EntityTreeTable/components/EntityNameCell.js +10 -9
- package/dist/components/EntityTreeTable/components/EntityNameCell.js.map +1 -1
- package/dist/components/EntityTreeTable/components/EntityTreeTableContext.d.ts +6 -0
- package/dist/components/EntityTreeTable/components/EntityTreeTableContext.d.ts.map +1 -1
- package/dist/components/EntityTreeTable/components/EntityTreeTableContext.js.map +1 -1
- package/dist/components/EntityTreeTable/hooks/useTableColumns.d.ts +1 -1
- package/dist/components/EntityTreeTable/hooks/useTableColumns.d.ts.map +1 -1
- package/dist/components/EntityTreeTable/hooks/useTableColumns.js +49 -39
- package/dist/components/EntityTreeTable/hooks/useTableColumns.js.map +1 -1
- package/dist/components/EntityUpload/EntityUpload.js +6 -6
- package/dist/components/Forum/DiscussionEmpty.css +1 -0
- package/dist/components/Forum/DiscussionEmpty.d.ts +6 -0
- package/dist/components/Forum/DiscussionEmpty.d.ts.map +1 -0
- package/dist/components/Forum/DiscussionEmpty.js +30 -0
- package/dist/components/Forum/DiscussionEmpty.js.map +1 -0
- package/dist/components/Forum/DiscussionEmpty.module.js +10 -0
- package/dist/components/Forum/DiscussionEmpty.module.js.map +1 -0
- package/dist/components/Forum/DiscussionEmpty.module.scss +37 -0
- package/dist/components/Icon/Icon.d.ts.map +1 -1
- package/dist/components/Icon/Icon.js +82 -80
- package/dist/components/Icon/Icon.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceGraph.d.ts.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceGraph.js +39 -41
- package/dist/components/ProvenanceGraph/ProvenanceGraph.js.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js +27 -20
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
- package/dist/components/SynapseChat/AccessLevelMenu.d.ts.map +1 -1
- package/dist/components/SynapseChat/AccessLevelMenu.js +1 -0
- package/dist/components/SynapseChat/AccessLevelMenu.js.map +1 -1
- package/dist/components/SynapseChat/GridAgentChat.d.ts.map +1 -1
- package/dist/components/SynapseChat/GridAgentChat.js +34 -25
- package/dist/components/SynapseChat/GridAgentChat.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChat.d.ts +10 -12
- package/dist/components/SynapseChat/SynapseChat.d.ts.map +1 -1
- package/dist/components/SynapseChat/SynapseChat.js +106 -103
- package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.css +1 -0
- package/dist/components/SynapseChat/SynapseChatInteraction.d.ts +22 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.d.ts.map +1 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.js +123 -94
- package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.module.js +8 -0
- package/dist/components/SynapseChat/SynapseChatInteraction.module.js.map +1 -0
- package/dist/components/SynapseChat/SynapseChatInteraction.module.scss +25 -0
- package/dist/components/SynapseChat/SynapseChatMessage.d.ts +16 -1
- package/dist/components/SynapseChat/SynapseChatMessage.d.ts.map +1 -1
- package/dist/components/SynapseChat/SynapseChatMessage.js +25 -11
- package/dist/components/SynapseChat/SynapseChatMessage.js.map +1 -1
- package/dist/components/SynapseChat/components/AddFilesDialog/AddFilesDialog.d.ts +27 -0
- package/dist/components/SynapseChat/components/AddFilesDialog/AddFilesDialog.d.ts.map +1 -0
- package/dist/components/SynapseChat/components/AddFilesDialog/AddFilesDialog.js +79 -0
- package/dist/components/SynapseChat/components/AddFilesDialog/AddFilesDialog.js.map +1 -0
- package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.css +1 -0
- package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.d.ts +33 -0
- package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.d.ts.map +1 -0
- package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.js +77 -0
- package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.js.map +1 -0
- package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.module.js +8 -0
- package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.module.js.map +1 -0
- package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.module.scss +16 -0
- package/dist/components/SynapseChat/components/ChatAttachmentStrip/ChatAttachmentStrip.css +1 -0
- package/dist/components/SynapseChat/components/ChatAttachmentStrip/ChatAttachmentStrip.d.ts +23 -0
- package/dist/components/SynapseChat/components/ChatAttachmentStrip/ChatAttachmentStrip.d.ts.map +1 -0
- package/dist/components/SynapseChat/components/ChatAttachmentStrip/ChatAttachmentStrip.js +24 -0
- package/dist/components/SynapseChat/components/ChatAttachmentStrip/ChatAttachmentStrip.js.map +1 -0
- package/dist/components/SynapseChat/components/ChatAttachmentStrip/ChatAttachmentStrip.module.js +9 -0
- package/dist/components/SynapseChat/components/ChatAttachmentStrip/ChatAttachmentStrip.module.js.map +1 -0
- package/dist/components/SynapseChat/components/ChatAttachmentStrip/ChatAttachmentStrip.module.scss +19 -0
- package/dist/components/SynapseChat/components/ChatInputArea/ChatInputArea.css +1 -0
- package/dist/components/SynapseChat/components/ChatInputArea/ChatInputArea.d.ts +22 -0
- package/dist/components/SynapseChat/components/ChatInputArea/ChatInputArea.d.ts.map +1 -0
- package/dist/components/SynapseChat/components/ChatInputArea/ChatInputArea.js +80 -0
- package/dist/components/SynapseChat/components/ChatInputArea/ChatInputArea.js.map +1 -0
- package/dist/components/SynapseChat/components/ChatInputArea/ChatInputArea.module.js +9 -0
- package/dist/components/SynapseChat/components/ChatInputArea/ChatInputArea.module.js.map +1 -0
- package/dist/components/SynapseChat/components/ChatInputArea/ChatInputArea.module.scss +39 -0
- package/dist/components/SynapseChat/useChatState.d.ts +12 -4
- package/dist/components/SynapseChat/useChatState.d.ts.map +1 -1
- package/dist/components/SynapseChat/useChatState.js +38 -20
- package/dist/components/SynapseChat/useChatState.js.map +1 -1
- package/dist/components/SynapseChat/utils/constants.d.ts +8 -0
- package/dist/components/SynapseChat/utils/constants.d.ts.map +1 -0
- package/dist/components/SynapseChat/utils/constants.js +12 -0
- package/dist/components/SynapseChat/utils/constants.js.map +1 -0
- package/dist/components/SynapseChat/utils/types.d.ts +13 -0
- package/dist/components/SynapseChat/utils/types.d.ts.map +1 -0
- package/dist/components/SynapseChat/utils/types.js +0 -0
- package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +101 -101
- package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js.map +1 -1
- package/dist/components/entity/page/action_menu/EntityActionMenu.d.ts +1 -0
- package/dist/components/entity/page/action_menu/EntityActionMenu.d.ts.map +1 -1
- package/dist/components/entity/page/action_menu/EntityActionMenu.js +8 -0
- package/dist/components/entity/page/action_menu/EntityActionMenu.js.map +1 -1
- package/dist/components/entity/page/breadcrumbs/EntityPageBreadcrumbs.js +1 -1
- package/dist/components/entity/page/breadcrumbs/EntityPageBreadcrumbs.js.map +1 -1
- package/dist/components/file/upload/BasicFileHandleUpload.d.ts +35 -4
- package/dist/components/file/upload/BasicFileHandleUpload.d.ts.map +1 -1
- package/dist/components/file/upload/BasicFileHandleUpload.js +22 -16
- package/dist/components/file/upload/BasicFileHandleUpload.js.map +1 -1
- package/dist/components/file/upload/MultiFileUploadProgress.js +6 -6
- package/dist/components/file/upload/UploadFilePanel.d.ts +32 -0
- package/dist/components/file/upload/UploadFilePanel.d.ts.map +1 -1
- package/dist/components/file/upload/UploadFilePanel.js +58 -42
- package/dist/components/file/upload/UploadFilePanel.js.map +1 -1
- package/dist/components/file/upload/validateFileSelection.d.ts +25 -0
- package/dist/components/file/upload/validateFileSelection.d.ts.map +1 -0
- package/dist/components/file/upload/validateFileSelection.js +18 -0
- package/dist/components/file/upload/validateFileSelection.js.map +1 -0
- package/dist/components/menu/DropdownMenu.d.ts +3 -0
- package/dist/components/menu/DropdownMenu.d.ts.map +1 -1
- package/dist/components/menu/DropdownMenu.js +108 -83
- package/dist/components/menu/DropdownMenu.js.map +1 -1
- package/dist/features/curator/dashboard/CuratorDashboard.d.ts.map +1 -1
- package/dist/features/curator/dashboard/CuratorDashboard.js +22 -23
- package/dist/features/curator/dashboard/CuratorDashboard.js.map +1 -1
- package/dist/features/curator/dashboard/components/CurationTaskCard.css +1 -1
- package/dist/features/curator/dashboard/components/CurationTaskCard.module.js +13 -13
- package/dist/features/curator/dashboard/components/CurationTaskCard.module.js.map +1 -1
- package/dist/features/curator/dashboard/components/CurationTaskCard.module.scss +2 -1
- package/dist/features/curator/dashboard/components/CurationTaskCardLayout.d.ts.map +1 -1
- package/dist/features/curator/dashboard/components/CurationTaskCardLayout.js +35 -27
- package/dist/features/curator/dashboard/components/CurationTaskCardLayout.js.map +1 -1
- package/dist/features/curator/dashboard/components/FilteredByTaskIdsBanner.d.ts +10 -0
- package/dist/features/curator/dashboard/components/FilteredByTaskIdsBanner.d.ts.map +1 -0
- package/dist/features/curator/dashboard/components/FilteredByTaskIdsBanner.js +19 -0
- package/dist/features/curator/dashboard/components/FilteredByTaskIdsBanner.js.map +1 -0
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.js +50 -47
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.js.map +1 -1
- package/dist/mocks/chat/mockChat.d.ts +13 -1
- package/dist/mocks/chat/mockChat.d.ts.map +1 -1
- package/dist/mocks/chat/mockChat.js +34 -9
- package/dist/mocks/chat/mockChat.js.map +1 -1
- package/dist/mocks/msw/handlers/chatHandlers.d.ts +1 -1
- package/dist/mocks/msw/handlers/chatHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/chatHandlers.js +21 -7
- package/dist/mocks/msw/handlers/chatHandlers.js.map +1 -1
- package/dist/synapse-client/SynapseClient.d.ts +2 -2
- package/dist/synapse-client/SynapseClient.d.ts.map +1 -1
- package/dist/synapse-client/SynapseClient.js.map +1 -1
- package/dist/synapse-queries/KeyFactory.d.ts +10 -1
- package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
- package/dist/synapse-queries/KeyFactory.js +29 -2
- package/dist/synapse-queries/KeyFactory.js.map +1 -1
- package/dist/synapse-queries/asynchronous/usePollAsynchronousJob.d.ts +2 -2
- package/dist/synapse-queries/asynchronous/usePollAsynchronousJob.d.ts.map +1 -1
- package/dist/synapse-queries/asynchronous/usePollAsynchronousJob.js +2 -1
- package/dist/synapse-queries/asynchronous/usePollAsynchronousJob.js.map +1 -1
- package/dist/synapse-queries/chat/useChat.d.ts +3 -2
- package/dist/synapse-queries/chat/useChat.d.ts.map +1 -1
- package/dist/synapse-queries/chat/useChat.js +7 -6
- package/dist/synapse-queries/chat/useChat.js.map +1 -1
- package/dist/synapse-queries/dataaccess/index.d.ts +1 -0
- package/dist/synapse-queries/dataaccess/index.d.ts.map +1 -1
- package/dist/synapse-queries/dataaccess/index.js +4 -3
- package/dist/synapse-queries/dataaccess/useEDuc.d.ts +44 -0
- package/dist/synapse-queries/dataaccess/useEDuc.d.ts.map +1 -0
- package/dist/synapse-queries/dataaccess/useEDuc.js +75 -0
- package/dist/synapse-queries/dataaccess/useEDuc.js.map +1 -0
- package/dist/synapse-queries/featureflags/useGetFeatureFlag.d.ts.map +1 -1
- package/dist/synapse-queries/featureflags/useGetFeatureFlag.js +1 -1
- package/dist/synapse-queries/featureflags/useGetFeatureFlag.js.map +1 -1
- package/dist/synapse-queries/file/useDirectUploadToS3.js +6 -6
- package/dist/synapse-queries/index.js +181 -172
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/SynapseConstants.d.ts +3 -0
- package/dist/utils/SynapseConstants.d.ts.map +1 -1
- package/dist/utils/SynapseConstants.js +122 -119
- package/dist/utils/SynapseConstants.js.map +1 -1
- package/dist/utils/featureflag/FeatureFlags.d.ts +3 -1
- package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -1
- package/dist/utils/featureflag/FeatureFlags.js +1 -1
- package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
- package/dist/utils/hooks/useCurationTaskListFilters.d.ts +36 -0
- package/dist/utils/hooks/useCurationTaskListFilters.d.ts.map +1 -0
- package/dist/utils/hooks/useCurationTaskListFilters.js +42 -0
- package/dist/utils/hooks/useCurationTaskListFilters.js.map +1 -0
- package/dist/utils/hooks/useUploadFileEntity/useUploadFileEntities.js +5 -5
- package/dist/utils/hooks/useUploadFileEntity/useUploadFiles.js +14 -14
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CurationTaskCardLayout.js","names":[],"sources":["../../../../../src/features/curator/dashboard/components/CurationTaskCardLayout.tsx"],"sourcesContent":["import {\n Card,\n Chip,\n Collapse,\n Divider,\n IconButton,\n Link,\n Skeleton,\n Typography,\n} from '@mui/material'\nimport HelpOutline from '@mui/icons-material/HelpOutline'\nimport {\n TaskBundle,\n TaskStatusStateEnum,\n} from '@sage-bionetworks/synapse-client'\nimport classNames from 'classnames'\nimport { ReactNode, useState } from 'react'\nimport { useNavigate } from 'react-router'\nimport dayjs from 'dayjs'\nimport utc from 'dayjs/plugin/utc'\nimport SettingsOutlinedIcon from '@mui/icons-material/SettingsOutlined'\nimport useGetEntityBundle from '@/synapse-queries/entity/useEntityBundle'\nimport { TASK_STATUS_CONFIG } from '@/features/entity/metadata-task/utils/constants'\nimport { parseDueDate } from '@/features/entity/metadata-task/utils/dueDate'\nimport styles from './CurationTaskCard.module.scss'\nimport sharedStyles from './shared.module.scss'\nimport UserOrTeamChip from './UserOrTeamChip'\n\ndayjs.extend(utc)\n\nfunction TaskTypeChip(props: { label: string }) {\n const { label } = props\n return (\n <Chip sx={{ fontWeight: 600, backgroundColor: '#BFD3ED' }} label={label} />\n )\n}\n\n/**\n * A chip to display CurationTask status.\n *\n * See {@link https://www.figma.com/design/0oPm5lLSUva8kyfVNMS6FA/Sage-Style---Component-Library--SDS-?node-id=4942-1129&m=dev}\n */\nfunction TaskStatusChip(props: { state: TaskStatusStateEnum | undefined }) {\n const { state } = props\n if (!state) return null\n const { label, backgroundColor } = TASK_STATUS_CONFIG[state]\n return (\n <Chip\n size=\"small\"\n sx={{ fontWeight: 600, backgroundColor }}\n label={label}\n />\n )\n}\n\nfunction DueDateChip(props: {
|
|
1
|
+
{"version":3,"file":"CurationTaskCardLayout.js","names":[],"sources":["../../../../../src/features/curator/dashboard/components/CurationTaskCardLayout.tsx"],"sourcesContent":["import {\n Card,\n Chip,\n Collapse,\n Divider,\n IconButton,\n Link,\n Skeleton,\n Typography,\n} from '@mui/material'\nimport HelpOutline from '@mui/icons-material/HelpOutline'\nimport {\n TaskBundle,\n TaskStatusStateEnum,\n} from '@sage-bionetworks/synapse-client'\nimport classNames from 'classnames'\nimport { ReactNode, useState } from 'react'\nimport { useNavigate } from 'react-router'\nimport dayjs from 'dayjs'\nimport utc from 'dayjs/plugin/utc'\nimport SettingsOutlinedIcon from '@mui/icons-material/SettingsOutlined'\nimport useGetEntityBundle from '@/synapse-queries/entity/useEntityBundle'\nimport { TASK_STATUS_CONFIG } from '@/features/entity/metadata-task/utils/constants'\nimport { parseDueDate } from '@/features/entity/metadata-task/utils/dueDate'\nimport styles from './CurationTaskCard.module.scss'\nimport sharedStyles from './shared.module.scss'\nimport UserOrTeamChip from './UserOrTeamChip'\n\ndayjs.extend(utc)\n\nfunction TaskTypeChip(props: { label: string }) {\n const { label } = props\n return (\n <Chip sx={{ fontWeight: 600, backgroundColor: '#BFD3ED' }} label={label} />\n )\n}\n\n/**\n * A chip to display CurationTask status.\n *\n * See {@link https://www.figma.com/design/0oPm5lLSUva8kyfVNMS6FA/Sage-Style---Component-Library--SDS-?node-id=4942-1129&m=dev}\n */\nfunction TaskStatusChip(props: { state: TaskStatusStateEnum | undefined }) {\n const { state } = props\n if (!state) return null\n const { label, backgroundColor } = TASK_STATUS_CONFIG[state]\n return (\n <Chip\n size=\"small\"\n sx={{ fontWeight: 600, backgroundColor }}\n label={label}\n />\n )\n}\n\nfunction DueDateChip(props: {\n dueDate: string | undefined\n taskState: TaskStatusStateEnum | undefined\n}) {\n const { dueDate, taskState } = props\n const dueDateObj = parseDueDate(dueDate)\n if (!dueDateObj) return null\n\n const formattedDate = dueDateObj.format('MM/DD/YY')\n const isTerminal =\n taskState === TaskStatusStateEnum.COMPLETED ||\n taskState === TaskStatusStateEnum.CANCELED\n\n let backgroundColor = '#E0E0E0'\n if (!isTerminal) {\n const daysUntilDue = dueDateObj.diff(dayjs.utc().startOf('day'), 'day')\n if (daysUntilDue < 0) {\n backgroundColor = '#FFCDD2'\n } else if (daysUntilDue < 30) {\n backgroundColor = '#FFF9C4'\n }\n }\n\n return (\n <Chip\n size=\"small\"\n sx={{ fontWeight: 600, backgroundColor }}\n label={`Due ${formattedDate}`}\n />\n )\n}\n\nexport type CurationTaskCardLayoutProps = {\n taskBundle: TaskBundle\n title: string\n description: string\n taskType: string\n principalIds: string[]\n /** Renders the action button. `expanded` reflects whether the card is in its expanded layout. */\n renderActionButton: (props: { expanded: boolean }) => ReactNode\n}\n\n/** Derives the fields shared by every card variant from a task's common properties. */\nexport function deriveCardFields(task: TaskBundle['task']) {\n return {\n title: task?.dataType ?? '',\n description: task?.instructions ?? '',\n principalIds: task?.assigneePrincipalId ? [task.assigneePrincipalId] : [],\n }\n}\n\n/**\n * Shared presentational chrome for a curation task card: title, chips, entity info, assignees,\n * status/due date, and an action button slot. Both the grid and executable task cards compose this.\n */\nexport default function CurationTaskCardLayout(\n props: CurationTaskCardLayoutProps,\n) {\n const {\n taskBundle,\n title,\n description,\n taskType,\n principalIds,\n renderActionButton,\n } = props\n\n const navigate = useNavigate()\n const [isExpanded, setIsExpanded] = useState(false)\n\n const taskId = taskBundle.task?.taskId\n const projectId = taskBundle.task?.projectId\n const { data: bundle } = useGetEntityBundle(projectId, undefined, {\n includeEntity: true,\n includePermissions: true,\n })\n const canEdit = bundle?.permissions?.canEdit ?? false\n\n return (\n <Card className={classNames(sharedStyles.card, styles.card)}>\n <div className={styles.cardContent}>\n <div className={styles.mainContent}>\n <div className={styles.titleChipContainer}>\n <Typography\n variant=\"headline3\"\n className={styles.title}\n onClick={() => setIsExpanded(!isExpanded)}\n >\n {title}\n </Typography>\n {taskType && <TaskTypeChip label={taskType} />}\n {canEdit && (\n <IconButton\n onClick={() => void navigate(`edit/${taskId}`)}\n aria-label=\"Task settings\"\n >\n <SettingsOutlinedIcon />\n </IconButton>\n )}\n </div>\n <div className={styles.entityInfo}>\n {bundle?.entity?.name ? (\n <Typography variant=\"body1\">{bundle.entity.name}</Typography>\n ) : (\n <Skeleton width={100} />\n )}\n {taskId && (\n <Typography variant=\"body1\">Task ID: {taskId}</Typography>\n )}\n </div>\n <div className={styles.userChipContainer}>\n {principalIds.map(principalId => (\n <UserOrTeamChip key={principalId} principalId={principalId} />\n ))}\n </div>\n </div>\n <div className={styles.statusContainer}>\n <TaskStatusChip state={taskBundle.status?.state} />\n <DueDateChip\n dueDate={taskBundle.status?.dueDate}\n taskState={taskBundle.status?.state}\n />\n </div>\n {!isExpanded && (\n <>\n <Divider\n orientation=\"vertical\"\n flexItem\n sx={{ display: { xs: 'none', md: 'block' } }}\n />\n {renderActionButton({ expanded: false })}\n </>\n )}\n </div>\n <Collapse in={isExpanded}>\n <div className={styles.expandedContent}>\n <div className={styles.expandedTopRow}>\n {description && (\n <Typography variant=\"body1\">{description}</Typography>\n )}\n <Link\n href=\"https://docs.synapse.org/synapse-docs/managing-metadata-with-curator\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n color=\"text.primary\"\n underline=\"hover\"\n className={styles.helpLink}\n sx={{ fontWeight: 400 }}\n >\n <HelpOutline className={styles.helpIcon} />\n Have questions or need help?\n </Link>\n </div>\n {renderActionButton({ expanded: true })}\n </div>\n </Collapse>\n </Card>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AA4BA,EAAM,OAAO,CAAG;AAEhB,SAAS,EAAa,GAA0B;CAC9C,IAAM,EAAE,aAAU;CAClB,OACE,kBAAC,GAAD;EAAM,IAAI;GAAE,YAAY;GAAK,iBAAiB;EAAU;EAAU;CAAQ,CAAA;AAE9E;AAOA,SAAS,EAAe,GAAmD;CACzE,IAAM,EAAE,aAAU;CAClB,IAAI,CAAC,GAAO,OAAO;CACnB,IAAM,EAAE,UAAO,uBAAoB,EAAmB;CACtD,OACE,kBAAC,GAAD;EACE,MAAK;EACL,IAAI;GAAE,YAAY;GAAK;EAAgB;EAChC;CACR,CAAA;AAEL;AAEA,SAAS,EAAY,GAGlB;CACD,IAAM,EAAE,YAAS,iBAAc,GACzB,IAAa,EAAa,CAAO;CACvC,IAAI,CAAC,GAAY,OAAO;CAExB,IAAM,IAAgB,EAAW,OAAO,UAAU,GAC5C,IACJ,MAAc,EAAoB,aAClC,MAAc,EAAoB,UAEhC,IAAkB;CACtB,IAAI,CAAC,GAAY;EACf,IAAM,IAAe,EAAW,KAAK,EAAM,IAAI,EAAE,QAAQ,KAAK,GAAG,KAAK;EACtE,AAAI,IAAe,IACjB,IAAkB,YACT,IAAe,OACxB,IAAkB;CAEtB;CAEA,OACE,kBAAC,GAAD;EACE,MAAK;EACL,IAAI;GAAE,YAAY;GAAK;EAAgB;EACvC,OAAO,OAAO;CACf,CAAA;AAEL;AAaA,SAAgB,EAAiB,GAA0B;CACzD,OAAO;EACL,OAAO,GAAM,YAAY;EACzB,aAAa,GAAM,gBAAgB;EACnC,cAAc,GAAM,sBAAsB,CAAC,EAAK,mBAAmB,IAAI,CAAC;CAC1E;AACF;AAMA,SAAwB,EACtB,GACA;CACA,IAAM,EACJ,eACA,UACA,gBACA,aACA,iBACA,0BACE,GAEE,IAAW,EAAY,GACvB,CAAC,GAAY,KAAiB,EAAS,EAAK,GAE5C,IAAS,EAAW,MAAM,QAC1B,IAAY,EAAW,MAAM,WAC7B,EAAE,MAAM,MAAW,EAAmB,GAAW,KAAA,GAAW;EAChE,eAAe;EACf,oBAAoB;CACtB,CAAC,GACK,IAAU,GAAQ,aAAa,WAAW;CAEhD,OACE,kBAAC,GAAD;EAAM,WAAW,EAAW,EAAa,MAAM,EAAO,IAAI;YAA1D,CACE,kBAAC,OAAD;GAAK,WAAW,EAAO;aAAvB;IACE,kBAAC,OAAD;KAAK,WAAW,EAAO;eAAvB;MACE,kBAAC,OAAD;OAAK,WAAW,EAAO;iBAAvB;QACE,kBAAC,GAAD;SACE,SAAQ;SACR,WAAW,EAAO;SAClB,eAAe,EAAc,CAAC,CAAU;mBAEvC;QACS,CAAA;QACX,KAAY,kBAAC,GAAD,EAAc,OAAO,EAAW,CAAA;QAC5C,KACC,kBAAC,GAAD;SACE,eAAe,KAAK,EAAS,QAAQ,GAAQ;SAC7C,cAAW;mBAEX,kBAAC,GAAD,CAAuB,CAAA;QACb,CAAA;OAEX;;MACL,kBAAC,OAAD;OAAK,WAAW,EAAO;iBAAvB,CACG,GAAQ,QAAQ,OACf,kBAAC,GAAD;QAAY,SAAQ;kBAAS,EAAO,OAAO;OAAiB,CAAA,IAE5D,kBAAC,GAAD,EAAU,OAAO,IAAM,CAAA,GAExB,KACC,kBAAC,GAAD;QAAY,SAAQ;kBAApB,CAA4B,aAAU,CAAmB;SAExD;;MACL,kBAAC,OAAD;OAAK,WAAW,EAAO;iBACpB,EAAa,KAAI,MAChB,kBAAC,GAAD,EAA+C,eAAc,GAAxC,CAAwC,CAC9D;MACE,CAAA;KACF;;IACL,kBAAC,OAAD;KAAK,WAAW,EAAO;eAAvB,CACE,kBAAC,GAAD,EAAgB,OAAO,EAAW,QAAQ,MAAQ,CAAA,GAClD,kBAAC,GAAD;MACE,SAAS,EAAW,QAAQ;MAC5B,WAAW,EAAW,QAAQ;KAC/B,CAAA,CACE;;IACJ,CAAC,KACA,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;KACE,aAAY;KACZ,UAAA;KACA,IAAI,EAAE,SAAS;MAAE,IAAI;MAAQ,IAAI;KAAQ,EAAE;IAC5C,CAAA,GACA,EAAmB,EAAE,UAAU,GAAM,CAAC,CACvC,EAAA,CAAA;GAED;MACL,kBAAC,GAAD;GAAU,IAAI;aACZ,kBAAC,OAAD;IAAK,WAAW,EAAO;cAAvB,CACE,kBAAC,OAAD;KAAK,WAAW,EAAO;eAAvB,CACG,KACC,kBAAC,GAAD;MAAY,SAAQ;gBAAS;KAAwB,CAAA,GAEvD,kBAAC,GAAD;MACE,MAAK;MACL,QAAO;MACP,KAAI;MACJ,OAAM;MACN,WAAU;MACV,WAAW,EAAO;MAClB,IAAI,EAAE,YAAY,IAAI;gBAPxB,CASE,kBAAC,GAAD,EAAa,WAAW,EAAO,SAAW,CAAA,GAAC,8BAEvC;OACH;QACJ,EAAmB,EAAE,UAAU,GAAK,CAAC,CACnC;;EACG,CAAA,CACN;;AAEV"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type FilteredByTaskIdsBannerProps = {
|
|
2
|
+
taskIds: number[] | undefined;
|
|
3
|
+
onClear: () => void;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Displayed above a curation task list when it is filtered down to a specific set of task IDs (via
|
|
7
|
+
* the `taskIds` URL search param), with an action to clear the filter and return to the unfiltered list.
|
|
8
|
+
*/
|
|
9
|
+
export default function FilteredByTaskIdsBanner(props: FilteredByTaskIdsBannerProps): import("react/jsx-runtime").JSX.Element | null;
|
|
10
|
+
//# sourceMappingURL=FilteredByTaskIdsBanner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilteredByTaskIdsBanner.d.ts","sourceRoot":"","sources":["../../../../../src/features/curator/dashboard/components/FilteredByTaskIdsBanner.tsx"],"names":[],"mappings":"AAEA,MAAM,MAAM,4BAA4B,GAAG;IACzC,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IAC7B,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAC7C,KAAK,EAAE,4BAA4B,kDAqBpC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import e from "../../../../components/FullWidthAlert/FullWidthAlert.js";
|
|
2
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
3
|
+
//#region src/features/curator/dashboard/components/FilteredByTaskIdsBanner.tsx
|
|
4
|
+
function n(n) {
|
|
5
|
+
let { taskIds: r, onClear: i } = n;
|
|
6
|
+
return !r || r.length === 0 ? null : /* @__PURE__ */ t(e, {
|
|
7
|
+
isGlobal: !1,
|
|
8
|
+
variant: "info",
|
|
9
|
+
description: `Showing ${r.length} filtered task${r.length === 1 ? "" : "s"}`,
|
|
10
|
+
primaryButtonConfig: {
|
|
11
|
+
text: "Clear filter",
|
|
12
|
+
onClick: i
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
export { n as default };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=FilteredByTaskIdsBanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilteredByTaskIdsBanner.js","names":[],"sources":["../../../../../src/features/curator/dashboard/components/FilteredByTaskIdsBanner.tsx"],"sourcesContent":["import FullWidthAlert from '@/components/FullWidthAlert/FullWidthAlert'\n\nexport type FilteredByTaskIdsBannerProps = {\n taskIds: number[] | undefined\n onClear: () => void\n}\n\n/**\n * Displayed above a curation task list when it is filtered down to a specific set of task IDs (via\n * the `taskIds` URL search param), with an action to clear the filter and return to the unfiltered list.\n */\nexport default function FilteredByTaskIdsBanner(\n props: FilteredByTaskIdsBannerProps,\n) {\n const { taskIds, onClear } = props\n\n if (!taskIds || taskIds.length === 0) {\n return null\n }\n\n return (\n <FullWidthAlert\n isGlobal={false}\n variant=\"info\"\n description={`Showing ${taskIds.length} filtered task${\n taskIds.length === 1 ? '' : 's'\n }`}\n primaryButtonConfig={{\n text: 'Clear filter',\n onClick: onClear,\n }}\n />\n )\n}\n"],"mappings":";;;AAWA,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,YAAS,eAAY;CAM7B,OAJI,CAAC,KAAW,EAAQ,WAAW,IAC1B,OAIP,kBAAC,GAAD;EACE,UAAU;EACV,SAAQ;EACR,aAAa,WAAW,EAAQ,OAAO,gBACrC,EAAQ,WAAW,IAAI,KAAK;EAE9B,qBAAqB;GACnB,MAAM;GACN,SAAS;EACX;CACD,CAAA;AAEL"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetadataTasksPage.d.ts","sourceRoot":"","sources":["../../../../../src/features/entity/metadata-task/components/MetadataTasksPage.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MetadataTasksPage.d.ts","sourceRoot":"","sources":["../../../../../src/features/entity/metadata-task/components/MetadataTasksPage.tsx"],"names":[],"mappings":"AAYA,OAAgC,EAC9B,4BAA4B,EAC7B,MAAM,2BAA2B,CAAA;AAElC,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;;GAEG;AACH,iBAAS,yBAAyB,CAAC,KAAK,EAAE,sBAAsB,2CAqE/D;AAED,MAAM,MAAM,sBAAsB,GAAG,sBAAsB,GACzD,IAAI,CAAC,4BAA4B,EAAE,WAAW,CAAC,CAAA;AAEjD;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,2CAEtE;AAED,OAAO,EAAE,yBAAyB,EAAE,CAAA"}
|
|
@@ -3,57 +3,60 @@ import { useGetFeatureFlag as t } from "../../../../synapse-queries/featureflags
|
|
|
3
3
|
import "../../../../synapse-queries/index.js";
|
|
4
4
|
import { FeatureFlagEnum as n } from "../../../../utils/featureflag/FeatureFlags.js";
|
|
5
5
|
import r from "../../../../components/layout/InfiniteTableLayout.js";
|
|
6
|
-
import {
|
|
7
|
-
import a from "
|
|
8
|
-
import o from "
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
6
|
+
import { useCurationTaskListFilters as i } from "../../../../utils/hooks/useCurationTaskListFilters.js";
|
|
7
|
+
import { useGetCurationTasksInfinite as a } from "../../../../synapse-queries/curation/task/useCurationTask.js";
|
|
8
|
+
import o from "../../../curator/dashboard/components/CurationTaskCard.js";
|
|
9
|
+
import s from "../../../curator/dashboard/components/FilteredByTaskIdsBanner.js";
|
|
10
|
+
import c from "./MetadataTasksPageRouter.js";
|
|
11
|
+
import { useMemo as l } from "react";
|
|
12
|
+
import { Button as u, FormControlLabel as d, Stack as f, Switch as p } from "@mui/material";
|
|
13
|
+
import { jsx as m, jsxs as h } from "react/jsx-runtime";
|
|
14
|
+
import { AddCircleTwoTone as g } from "@mui/icons-material";
|
|
15
|
+
import { useNavigate as _ } from "react-router";
|
|
14
16
|
//#region src/features/entity/metadata-task/components/MetadataTasksPage.tsx
|
|
15
|
-
function
|
|
16
|
-
let { projectId: _ } =
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
})]
|
|
40
|
-
}), /* @__PURE__ */ p(r, {
|
|
41
|
-
table: /* @__PURE__ */ p(d, {
|
|
42
|
-
gap: 3,
|
|
43
|
-
sx: { my: 2 },
|
|
44
|
-
children: D.map((e) => /* @__PURE__ */ p(a, { taskBundle: e }, e.task?.taskId))
|
|
17
|
+
function v(c) {
|
|
18
|
+
let { projectId: v } = c, y = _(), { request: b, taskIds: x, assignedToMe: S, setAssignedToMe: C, clearTaskIdsFilter: w } = i({ projectId: v }), { data: T } = e(v), { data: E, isLoading: D, hasNextPage: O, fetchNextPage: k, isFetchingNextPage: A } = a(b), j = l(() => E?.pages.flatMap((e) => e.bundlePage ?? []) ?? [], [E]), M = t(n.CURATION_TASK_PAGE_SHOW_NEW_TASK_BUTTON);
|
|
19
|
+
return /* @__PURE__ */ h(f, { children: [
|
|
20
|
+
/* @__PURE__ */ h(f, {
|
|
21
|
+
direction: "row",
|
|
22
|
+
justifyContent: "flex-end",
|
|
23
|
+
children: [/* @__PURE__ */ m(d, {
|
|
24
|
+
control: /* @__PURE__ */ m(p, {
|
|
25
|
+
checked: S,
|
|
26
|
+
onChange: (e, t) => {
|
|
27
|
+
C(t);
|
|
28
|
+
}
|
|
29
|
+
}),
|
|
30
|
+
label: "View only tasks assigned to me"
|
|
31
|
+
}), M && T?.canAddChild && /* @__PURE__ */ m(u, {
|
|
32
|
+
variant: "outlined",
|
|
33
|
+
onClick: () => void y("create"),
|
|
34
|
+
startIcon: /* @__PURE__ */ m(g, {}),
|
|
35
|
+
children: "New Task"
|
|
36
|
+
})]
|
|
37
|
+
}),
|
|
38
|
+
/* @__PURE__ */ m(s, {
|
|
39
|
+
taskIds: x,
|
|
40
|
+
onClear: w
|
|
45
41
|
}),
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
42
|
+
/* @__PURE__ */ m(r, {
|
|
43
|
+
table: /* @__PURE__ */ m(f, {
|
|
44
|
+
gap: 3,
|
|
45
|
+
sx: { my: 2 },
|
|
46
|
+
children: j.map((e) => /* @__PURE__ */ m(o, { taskBundle: e }, e.task?.taskId))
|
|
47
|
+
}),
|
|
48
|
+
isLoading: D,
|
|
49
|
+
isEmpty: !D && j.length === 0,
|
|
50
|
+
hasNextPage: O,
|
|
51
|
+
onFetchNextPageClicked: () => void k(),
|
|
52
|
+
isFetchingNextPage: A
|
|
53
|
+
})
|
|
54
|
+
] });
|
|
52
55
|
}
|
|
53
|
-
function
|
|
54
|
-
return /* @__PURE__ */
|
|
56
|
+
function y(e) {
|
|
57
|
+
return /* @__PURE__ */ m(c, { ...e });
|
|
55
58
|
}
|
|
56
59
|
//#endregion
|
|
57
|
-
export {
|
|
60
|
+
export { v as MetadataTasksPageInternal, y as default };
|
|
58
61
|
|
|
59
62
|
//# sourceMappingURL=MetadataTasksPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetadataTasksPage.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/components/MetadataTasksPage.tsx"],"sourcesContent":["import InfiniteTableLayout from '@/components/layout/InfiniteTableLayout'\nimport CurationTaskCard from '@/features/curator/dashboard/components/CurationTaskCard'\nimport { useGetCurationTasksInfinite } from '@/synapse-queries/curation/task/useCurationTask'\nimport { useGetFeatureFlag } from '@/synapse-queries/index'\nimport { useGetEntityPermissions } from '@/synapse-queries/entity/useEntity'\nimport { Button, FormControlLabel, Stack, Switch } from '@mui/material'\nimport { useMemo
|
|
1
|
+
{"version":3,"file":"MetadataTasksPage.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/components/MetadataTasksPage.tsx"],"sourcesContent":["import InfiniteTableLayout from '@/components/layout/InfiniteTableLayout'\nimport CurationTaskCard from '@/features/curator/dashboard/components/CurationTaskCard'\nimport FilteredByTaskIdsBanner from '@/features/curator/dashboard/components/FilteredByTaskIdsBanner'\nimport { useGetCurationTasksInfinite } from '@/synapse-queries/curation/task/useCurationTask'\nimport { useGetFeatureFlag } from '@/synapse-queries/index'\nimport { useGetEntityPermissions } from '@/synapse-queries/entity/useEntity'\nimport { useCurationTaskListFilters } from '@/utils/hooks/useCurationTaskListFilters'\nimport { Button, FormControlLabel, Stack, Switch } from '@mui/material'\nimport { useMemo } from 'react'\nimport { AddCircleTwoTone } from '@mui/icons-material'\nimport { FeatureFlagEnum } from '@/utils/featureflag/FeatureFlags'\nimport { useNavigate } from 'react-router'\nimport MetadataTasksPageRouter, {\n MetadataTasksPageRouterProps,\n} from './MetadataTasksPageRouter'\n\nexport type MetadataTaskTableProps = {\n projectId: string\n}\n\n/**\n * Displays a list of metadata curation tasks for a particular project, with actions that can be performed on each task.\n */\nfunction MetadataTasksPageInternal(props: MetadataTaskTableProps) {\n const { projectId } = props\n const navigate = useNavigate()\n const {\n request,\n taskIds,\n assignedToMe,\n setAssignedToMe,\n clearTaskIdsFilter,\n } = useCurationTaskListFilters({ projectId })\n\n const { data: permissions } = useGetEntityPermissions(projectId)\n\n const { data, isLoading, hasNextPage, fetchNextPage, isFetchingNextPage } =\n useGetCurationTasksInfinite(request)\n\n const tasks = useMemo(\n () => data?.pages.flatMap(page => page.bundlePage ?? []) ?? [],\n [data],\n )\n\n const showNewTaskButton = useGetFeatureFlag(\n FeatureFlagEnum.CURATION_TASK_PAGE_SHOW_NEW_TASK_BUTTON,\n )\n\n return (\n <Stack>\n <Stack direction=\"row\" justifyContent=\"flex-end\">\n <FormControlLabel\n control={\n <Switch\n checked={assignedToMe}\n onChange={(_e, checked) => {\n setAssignedToMe(checked)\n }}\n />\n }\n label=\"View only tasks assigned to me\"\n />\n {showNewTaskButton && permissions?.canAddChild && (\n <Button\n variant=\"outlined\"\n onClick={() => void navigate('create')}\n startIcon={<AddCircleTwoTone />}\n >\n New Task\n </Button>\n )}\n </Stack>\n <FilteredByTaskIdsBanner taskIds={taskIds} onClear={clearTaskIdsFilter} />\n <InfiniteTableLayout\n table={\n <Stack gap={3} sx={{ my: 2 }}>\n {tasks.map(taskBundle => (\n <CurationTaskCard\n key={taskBundle.task?.taskId}\n taskBundle={taskBundle}\n />\n ))}\n </Stack>\n }\n isLoading={isLoading}\n isEmpty={!isLoading && tasks.length === 0}\n hasNextPage={hasNextPage}\n onFetchNextPageClicked={() => void fetchNextPage()}\n isFetchingNextPage={isFetchingNextPage}\n />\n </Stack>\n )\n}\n\nexport type MetadataTasksPageProps = MetadataTaskTableProps &\n Omit<MetadataTasksPageRouterProps, 'projectId'>\n\n/**\n * A page that displays a project's metadata curation tasks, with included routing logic for the\n * create/edit task pages.\n */\nexport default function MetadataTasksPage(props: MetadataTasksPageProps) {\n return <MetadataTasksPageRouter {...props} />\n}\n\nexport { MetadataTasksPageInternal }\n"],"mappings":";;;;;;;;;;;;;;;;AAuBA,SAAS,EAA0B,GAA+B;CAChE,IAAM,EAAE,iBAAc,GAChB,IAAW,EAAY,GACvB,EACJ,YACA,YACA,iBACA,oBACA,0BACE,EAA2B,EAAE,aAAU,CAAC,GAEtC,EAAE,MAAM,MAAgB,EAAwB,CAAS,GAEzD,EAAE,SAAM,cAAW,gBAAa,kBAAe,0BACnD,EAA4B,CAAO,GAE/B,IAAQ,QACN,GAAM,MAAM,SAAQ,MAAQ,EAAK,cAAc,CAAC,CAAC,KAAK,CAAC,GAC7D,CAAC,CAAI,CACP,GAEM,IAAoB,EACxB,EAAgB,uCAClB;CAEA,OACE,kBAAC,GAAD,EAAA,UAAA;EACE,kBAAC,GAAD;GAAO,WAAU;GAAM,gBAAe;aAAtC,CACE,kBAAC,GAAD;IACE,SACE,kBAAC,GAAD;KACE,SAAS;KACT,WAAW,GAAI,MAAY;MACzB,EAAgB,CAAO;KACzB;IACD,CAAA;IAEH,OAAM;GACP,CAAA,GACA,KAAqB,GAAa,eACjC,kBAAC,GAAD;IACE,SAAQ;IACR,eAAe,KAAK,EAAS,QAAQ;IACrC,WAAW,kBAAC,GAAD,CAAmB,CAAA;cAC/B;GAEO,CAAA,CAEL;;EACP,kBAAC,GAAD;GAAkC;GAAS,SAAS;EAAqB,CAAA;EACzE,kBAAC,GAAD;GACE,OACE,kBAAC,GAAD;IAAO,KAAK;IAAG,IAAI,EAAE,IAAI,EAAE;cACxB,EAAM,KAAI,MACT,kBAAC,GAAD,EAEc,cACb,GAFM,EAAW,MAAM,MAEvB,CACF;GACI,CAAA;GAEE;GACX,SAAS,CAAC,KAAa,EAAM,WAAW;GAC3B;GACb,8BAA8B,KAAK,EAAc;GAC7B;EACrB,CAAA;CACI,EAAA,CAAA;AAEX;AASA,SAAwB,EAAkB,GAA+B;CACvE,OAAO,kBAAC,GAAD,EAAyB,GAAI,EAAQ,CAAA;AAC9C"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ChatAttachment } from '@/components/SynapseChat/utils/types';
|
|
2
|
+
import { AgentChatRequest, AgentChatResponse } from '@sage-bionetworks/synapse-client';
|
|
3
|
+
import { AgentSession, AsynchronousJobStatus, CreateAgentSessionRequest, ListAgentSessionsRequest, ListAgentSessionsResponse, SessionHistoryResponse, TraceEventsResponse } from '@sage-bionetworks/synapse-types';
|
|
2
4
|
export declare const mockChatSessionId = "session-456";
|
|
3
5
|
export declare const mockCreateAgentSessionRequest: CreateAgentSessionRequest;
|
|
4
6
|
export declare const mockAgentSession: AgentSession;
|
|
@@ -7,9 +9,19 @@ export declare const mockListAgentSessionsRequest: ListAgentSessionsRequest;
|
|
|
7
9
|
export declare const mockListAgentSessionsResponse: ListAgentSessionsResponse;
|
|
8
10
|
export declare const mockAgentChatRequest: AgentChatRequest;
|
|
9
11
|
export declare const mockAgentChatResponse: AgentChatResponse;
|
|
12
|
+
/**
|
|
13
|
+
* Builds a full `AsynchronousJobStatus` for the chat async job, for tests/stories that poll the
|
|
14
|
+
* job status endpoint directly (e.g. to exercise the PROCESSING state). `jobId` is required since
|
|
15
|
+
* it must match the id returned by the mocked start-chat-async endpoint; other fields default to
|
|
16
|
+
* placeholder values and can be overridden.
|
|
17
|
+
*/
|
|
18
|
+
export declare function mockChatJobStatus(overrides: Partial<AsynchronousJobStatus<AgentChatRequest, AgentChatResponse>> & {
|
|
19
|
+
jobId: string;
|
|
20
|
+
}): AsynchronousJobStatus<AgentChatRequest, AgentChatResponse>;
|
|
10
21
|
export declare const mockSessionHistoryResponse: SessionHistoryResponse;
|
|
11
22
|
export declare const mockTraceEventsResponse1: TraceEventsResponse;
|
|
12
23
|
export declare const mockTraceEventsResponse2: TraceEventsResponse;
|
|
13
24
|
export declare const mockTraceEventsResponse3: TraceEventsResponse;
|
|
14
25
|
export declare const mockEmptyTraceEventsResponse: TraceEventsResponse;
|
|
26
|
+
export declare function mockChatAttachment(overrides?: Partial<ChatAttachment>): ChatAttachment;
|
|
15
27
|
//# sourceMappingURL=mockChat.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mockChat.d.ts","sourceRoot":"","sources":["../../../src/mocks/chat/mockChat.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"mockChat.d.ts","sourceRoot":"","sources":["../../../src/mocks/chat/mockChat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AACrE,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAEL,YAAY,EACZ,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,iCAAiC,CAAA;AAExC,eAAO,MAAM,iBAAiB,gBAAgB,CAAA;AAC9C,eAAO,MAAM,6BAA6B,EAAE,yBAG3C,CAAA;AACD,eAAO,MAAM,gBAAgB,EAAE,YAK9B,CAAA;AACD,eAAO,MAAM,iBAAiB,EAAE,YAK/B,CAAA;AACD,eAAO,MAAM,4BAA4B,EAAE,wBAE1C,CAAA;AAED,eAAO,MAAM,6BAA6B,EAAE,yBAG3C,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,gBAKlC,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,iBAKnC,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,OAAO,CAChB,qBAAqB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAC3D,GAAG;IACF,KAAK,EAAE,MAAM,CAAA;CACd,GACA,qBAAqB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAY5D;AAED,eAAO,MAAM,0BAA0B,EAAE,sBAkBxC,CAAA;AAED,eAAO,MAAM,wBAAwB,EAAE,mBAQtC,CAAA;AAED,eAAO,MAAM,wBAAwB,EAAE,mBAQtC,CAAA;AACD,eAAO,MAAM,wBAAwB,EAAE,mBAStC,CAAA;AAGD,eAAO,MAAM,4BAA4B,EAAE,mBAG1C,CAAA;AAID,wBAAgB,kBAAkB,CAChC,SAAS,GAAE,OAAO,CAAC,cAAc,CAAM,GACtC,cAAc,CAShB"}
|
|
@@ -19,11 +19,27 @@ var t = "session-456", n = {
|
|
|
19
19
|
}, s = {
|
|
20
20
|
sessionId: t,
|
|
21
21
|
chatText: "Hello! How can I access My Projects?",
|
|
22
|
-
enableTrace: !0
|
|
22
|
+
enableTrace: !0,
|
|
23
|
+
concreteType: "org.sagebionetworks.repo.model.agent.AgentChatRequest"
|
|
23
24
|
}, c = {
|
|
24
25
|
sessionId: t,
|
|
25
|
-
responseText: "This is the only response this agent is told to respond with. \n\n<function_results>\n<result>\n<tool_name><REDACTED>_get_description</tool_name>\n<stdout> **Adapt**: You can remix, transform, and build upon the material **Attribution:** You must acknowledge the Data Contributor using the acknowledgment statement below: **Non-Commercial**: You may not use the material for commercial purposes. \n\nThe TOPACIO study was a phase 2 clinical trial of the investigational drug OPB-51602 in patients with advanced solid tumors. The study was sponsored by Oncopia Therapeutics, Inc. and conducted at multiple sites in the United States between 2013 and 2015.\n\nThis dataset contains de-identified clinical data, biomarker data, and pharmacokinetic/pharmacodynamic (PK/PD) data from the TOPACIO study. Specific data files include:\n\n- Demographics and baseline characteristics\n- Adverse events \n- Tumor response data\n- Pharmacokinetic data\n- Pharmacodynamic biomarker data\n\nThe data has been de-identified in accordance with HIPAA regulations. Please see the study protocol and data dictionary files for more details on the collected data and definitions.\n\n**Acknowledgment Statement**: The TOPACIO study data was contributed by Oncopia Therapeutics, Inc. Please use the following text to acknowledge the source of the data: \"The results published here are in part based upon data generated by the TOPACIO clinical trial, provided by Oncopia Therapeutics, Inc.\"\n</stdout>\n</result>\n"
|
|
26
|
-
|
|
26
|
+
responseText: "This is the only response this agent is told to respond with. \n\n<function_results>\n<result>\n<tool_name><REDACTED>_get_description</tool_name>\n<stdout> **Adapt**: You can remix, transform, and build upon the material **Attribution:** You must acknowledge the Data Contributor using the acknowledgment statement below: **Non-Commercial**: You may not use the material for commercial purposes. \n\nThe TOPACIO study was a phase 2 clinical trial of the investigational drug OPB-51602 in patients with advanced solid tumors. The study was sponsored by Oncopia Therapeutics, Inc. and conducted at multiple sites in the United States between 2013 and 2015.\n\nThis dataset contains de-identified clinical data, biomarker data, and pharmacokinetic/pharmacodynamic (PK/PD) data from the TOPACIO study. Specific data files include:\n\n- Demographics and baseline characteristics\n- Adverse events \n- Tumor response data\n- Pharmacokinetic data\n- Pharmacodynamic biomarker data\n\nThe data has been de-identified in accordance with HIPAA regulations. Please see the study protocol and data dictionary files for more details on the collected data and definitions.\n\n**Acknowledgment Statement**: The TOPACIO study data was contributed by Oncopia Therapeutics, Inc. Please use the following text to acknowledge the source of the data: \"The results published here are in part based upon data generated by the TOPACIO clinical trial, provided by Oncopia Therapeutics, Inc.\"\n</stdout>\n</result>\n",
|
|
27
|
+
concreteType: "org.sagebionetworks.repo.model.agent.AgentChatResponse"
|
|
28
|
+
};
|
|
29
|
+
function l(e) {
|
|
30
|
+
return {
|
|
31
|
+
jobState: "COMPLETE",
|
|
32
|
+
jobCanceling: !1,
|
|
33
|
+
requestBody: s,
|
|
34
|
+
etag: "00000000-0000-0000-0000-000000000000",
|
|
35
|
+
startedByUserId: 0,
|
|
36
|
+
startedOn: "",
|
|
37
|
+
changedOn: "",
|
|
38
|
+
runtimeMS: 100,
|
|
39
|
+
...e
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
var u = {
|
|
27
43
|
sessionId: t,
|
|
28
44
|
page: [{
|
|
29
45
|
usersRequestText: "What is the weather like today?",
|
|
@@ -37,29 +53,38 @@ var t = "session-456", n = {
|
|
|
37
53
|
agentResponseTimestamp: "2024-09-06T14:32:05Z"
|
|
38
54
|
}],
|
|
39
55
|
nextPageToken: void 0
|
|
40
|
-
},
|
|
56
|
+
}, d = {
|
|
41
57
|
jobId: ":id",
|
|
42
58
|
page: [{
|
|
43
59
|
timestamp: 1695567600,
|
|
44
60
|
message: "Executing search on Synapse"
|
|
45
61
|
}]
|
|
46
|
-
},
|
|
62
|
+
}, f = {
|
|
47
63
|
jobId: ":id",
|
|
48
64
|
page: [{
|
|
49
65
|
timestamp: 1695567700,
|
|
50
66
|
message: "Gathering entity metadata"
|
|
51
67
|
}]
|
|
52
|
-
},
|
|
68
|
+
}, p = {
|
|
53
69
|
jobId: ":id",
|
|
54
70
|
page: [{
|
|
55
71
|
timestamp: 1695567800,
|
|
56
72
|
message: "<thinking>The metadata shows that the entity with ID syn9602623 is a Synapse project named \"SearchIntegrationTest.Projecte475c6e8-414a-4842-b876-bf8232ce05d0\". Its description contains the search term \"e7b33c3a-2392-4ce7-a357-efa4612e4a41\". The metadata ..."
|
|
57
73
|
}]
|
|
58
|
-
},
|
|
74
|
+
}, m = {
|
|
59
75
|
jobId: ":id",
|
|
60
76
|
page: []
|
|
61
|
-
};
|
|
77
|
+
}, h = 0;
|
|
78
|
+
function g(e = {}) {
|
|
79
|
+
return h++, {
|
|
80
|
+
fileHandleId: `${9999990 + h}`,
|
|
81
|
+
fileName: `file-${h}.txt`,
|
|
82
|
+
contentType: "text/plain",
|
|
83
|
+
sizeBytes: 1024,
|
|
84
|
+
...e
|
|
85
|
+
};
|
|
86
|
+
}
|
|
62
87
|
//#endregion
|
|
63
|
-
export { s as mockAgentChatRequest, c as mockAgentChatResponse, r as mockAgentSession, i as mockAgentSession2, t as mockChatSessionId, n as mockCreateAgentSessionRequest,
|
|
88
|
+
export { s as mockAgentChatRequest, c as mockAgentChatResponse, r as mockAgentSession, i as mockAgentSession2, g as mockChatAttachment, l as mockChatJobStatus, t as mockChatSessionId, n as mockCreateAgentSessionRequest, m as mockEmptyTraceEventsResponse, a as mockListAgentSessionsRequest, o as mockListAgentSessionsResponse, u as mockSessionHistoryResponse, d as mockTraceEventsResponse1, f as mockTraceEventsResponse2, p as mockTraceEventsResponse3 };
|
|
64
89
|
|
|
65
90
|
//# sourceMappingURL=mockChat.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mockChat.js","names":[],"sources":["../../../src/mocks/chat/mockChat.ts"],"sourcesContent":["import {\n
|
|
1
|
+
{"version":3,"file":"mockChat.js","names":[],"sources":["../../../src/mocks/chat/mockChat.ts"],"sourcesContent":["import { ChatAttachment } from '@/components/SynapseChat/utils/types'\nimport {\n AgentChatRequest,\n AgentChatResponse,\n} from '@sage-bionetworks/synapse-client'\nimport {\n AgentAccessLevel,\n AgentSession,\n AsynchronousJobStatus,\n CreateAgentSessionRequest,\n ListAgentSessionsRequest,\n ListAgentSessionsResponse,\n SessionHistoryResponse,\n TraceEventsResponse,\n} from '@sage-bionetworks/synapse-types'\n\nexport const mockChatSessionId = 'session-456'\nexport const mockCreateAgentSessionRequest: CreateAgentSessionRequest = {\n agentAccessLevel: AgentAccessLevel.READ_YOUR_PRIVATE_DATA,\n agentRegistrationId: 'experimental-agent-123',\n}\nexport const mockAgentSession: AgentSession = {\n sessionId: mockChatSessionId,\n agentAccessLevel: AgentAccessLevel.PUBLICLY_ACCESSIBLE,\n startedOn: '2024-09-01T12:00:00Z',\n agentRegistrationId: 'default-agent',\n}\nexport const mockAgentSession2: AgentSession = {\n sessionId: 'session-789',\n agentAccessLevel: AgentAccessLevel.WRITE_YOUR_PRIVATE_DATA,\n startedOn: '2024-09-01T12:00:00Z',\n agentRegistrationId: 'default-agent',\n}\nexport const mockListAgentSessionsRequest: ListAgentSessionsRequest = {\n nextPageToken: 'token-789',\n}\n\nexport const mockListAgentSessionsResponse: ListAgentSessionsResponse = {\n page: [mockAgentSession, mockAgentSession2],\n nextPageToken: 'token-790',\n}\n\nexport const mockAgentChatRequest: AgentChatRequest = {\n sessionId: mockChatSessionId,\n chatText: 'Hello! How can I access My Projects?',\n enableTrace: true,\n concreteType: 'org.sagebionetworks.repo.model.agent.AgentChatRequest',\n}\n\nexport const mockAgentChatResponse: AgentChatResponse = {\n sessionId: mockChatSessionId,\n responseText:\n 'This is the only response this agent is told to respond with. \\n\\n<function_results>\\n<result>\\n<tool_name><REDACTED>_get_description</tool_name>\\n<stdout> **Adapt**: You can remix, transform, and build upon the material **Attribution:** You must acknowledge the Data Contributor using the acknowledgment statement below: **Non-Commercial**: You may not use the material for commercial purposes. \\n\\nThe TOPACIO study was a phase 2 clinical trial of the investigational drug OPB-51602 in patients with advanced solid tumors. The study was sponsored by Oncopia Therapeutics, Inc. and conducted at multiple sites in the United States between 2013 and 2015.\\n\\nThis dataset contains de-identified clinical data, biomarker data, and pharmacokinetic/pharmacodynamic (PK/PD) data from the TOPACIO study. Specific data files include:\\n\\n- Demographics and baseline characteristics\\n- Adverse events \\n- Tumor response data\\n- Pharmacokinetic data\\n- Pharmacodynamic biomarker data\\n\\nThe data has been de-identified in accordance with HIPAA regulations. Please see the study protocol and data dictionary files for more details on the collected data and definitions.\\n\\n**Acknowledgment Statement**: The TOPACIO study data was contributed by Oncopia Therapeutics, Inc. Please use the following text to acknowledge the source of the data: \"The results published here are in part based upon data generated by the TOPACIO clinical trial, provided by Oncopia Therapeutics, Inc.\"\\n</stdout>\\n</result>\\n',\n concreteType: 'org.sagebionetworks.repo.model.agent.AgentChatResponse',\n}\n\n/**\n * Builds a full `AsynchronousJobStatus` for the chat async job, for tests/stories that poll the\n * job status endpoint directly (e.g. to exercise the PROCESSING state). `jobId` is required since\n * it must match the id returned by the mocked start-chat-async endpoint; other fields default to\n * placeholder values and can be overridden.\n */\nexport function mockChatJobStatus(\n overrides: Partial<\n AsynchronousJobStatus<AgentChatRequest, AgentChatResponse>\n > & {\n jobId: string\n },\n): AsynchronousJobStatus<AgentChatRequest, AgentChatResponse> {\n return {\n jobState: 'COMPLETE',\n jobCanceling: false,\n requestBody: mockAgentChatRequest,\n etag: '00000000-0000-0000-0000-000000000000',\n startedByUserId: 0,\n startedOn: '',\n changedOn: '',\n runtimeMS: 100,\n ...overrides,\n }\n}\n\nexport const mockSessionHistoryResponse: SessionHistoryResponse = {\n sessionId: mockChatSessionId,\n page: [\n {\n usersRequestText: 'What is the weather like today?',\n usersRequestTimestamp: '2024-09-06T14:30:00Z',\n agentResponseText: 'The weather is sunny with a high of 75°F.',\n agentResponseTimestamp: '2024-09-06T14:30:10Z',\n },\n {\n usersRequestText: 'Can you tell me a joke?',\n usersRequestTimestamp: '2024-09-06T14:32:00Z',\n agentResponseText:\n 'Why don’t scientists trust atoms? Because they make up everything!',\n agentResponseTimestamp: '2024-09-06T14:32:05Z',\n },\n ],\n nextPageToken: undefined,\n}\n\nexport const mockTraceEventsResponse1: TraceEventsResponse = {\n jobId: ':id',\n page: [\n {\n timestamp: 1695567600, // Example timestamp (in seconds)\n message: 'Executing search on Synapse',\n },\n ],\n}\n\nexport const mockTraceEventsResponse2: TraceEventsResponse = {\n jobId: ':id',\n page: [\n {\n timestamp: 1695567700, // Example timestamp (in seconds)\n message: 'Gathering entity metadata',\n },\n ],\n}\nexport const mockTraceEventsResponse3: TraceEventsResponse = {\n jobId: ':id',\n page: [\n {\n timestamp: 1695567800, // Example timestamp (in seconds)\n message:\n '<thinking>The metadata shows that the entity with ID syn9602623 is a Synapse project named \"SearchIntegrationTest.Projecte475c6e8-414a-4842-b876-bf8232ce05d0\". Its description contains the search term \"e7b33c3a-2392-4ce7-a357-efa4612e4a41\". The metadata ...',\n },\n ],\n}\n\n// no new trace events events\nexport const mockEmptyTraceEventsResponse: TraceEventsResponse = {\n jobId: ':id',\n page: [],\n}\n\nlet mockChatAttachmentIdCounter = 0\n\nexport function mockChatAttachment(\n overrides: Partial<ChatAttachment> = {},\n): ChatAttachment {\n mockChatAttachmentIdCounter++\n return {\n fileHandleId: `${9999990 + mockChatAttachmentIdCounter}`,\n fileName: `file-${mockChatAttachmentIdCounter}.txt`,\n contentType: 'text/plain',\n sizeBytes: 1024,\n ...overrides,\n }\n}\n"],"mappings":";;AAgBA,IAAa,IAAoB,eACpB,IAA2D;CACtE,kBAAkB,EAAiB;CACnC,qBAAqB;AACvB,GACa,IAAiC;CAC5C,WAAW;CACX,kBAAkB,EAAiB;CACnC,WAAW;CACX,qBAAqB;AACvB,GACa,IAAkC;CAC7C,WAAW;CACX,kBAAkB,EAAiB;CACnC,WAAW;CACX,qBAAqB;AACvB,GACa,IAAyD,EACpE,eAAe,YACjB,GAEa,IAA2D;CACtE,MAAM,CAAC,GAAkB,CAAiB;CAC1C,eAAe;AACjB,GAEa,IAAyC;CACpD,WAAW;CACX,UAAU;CACV,aAAa;CACb,cAAc;AAChB,GAEa,IAA2C;CACtD,WAAW;CACX,cACE;CACF,cAAc;AAChB;AAQA,SAAgB,EACd,GAK4D;CAC5D,OAAO;EACL,UAAU;EACV,cAAc;EACd,aAAa;EACb,MAAM;EACN,iBAAiB;EACjB,WAAW;EACX,WAAW;EACX,WAAW;EACX,GAAG;CACL;AACF;AAEA,IAAa,IAAqD;CAChE,WAAW;CACX,MAAM,CACJ;EACE,kBAAkB;EAClB,uBAAuB;EACvB,mBAAmB;EACnB,wBAAwB;CAC1B,GACA;EACE,kBAAkB;EAClB,uBAAuB;EACvB,mBACE;EACF,wBAAwB;CAC1B,CACF;CACA,eAAe,KAAA;AACjB,GAEa,IAAgD;CAC3D,OAAO;CACP,MAAM,CACJ;EACE,WAAW;EACX,SAAS;CACX,CACF;AACF,GAEa,IAAgD;CAC3D,OAAO;CACP,MAAM,CACJ;EACE,WAAW;EACX,SAAS;CACX,CACF;AACF,GACa,IAAgD;CAC3D,OAAO;CACP,MAAM,CACJ;EACE,WAAW;EACX,SACE;CACJ,CACF;AACF,GAGa,IAAoD;CAC/D,OAAO;CACP,MAAM,CAAC;AACT,GAEI,IAA8B;AAElC,SAAgB,EACd,IAAqC,CAAC,GACtB;CAEhB,OADA,KACO;EACL,cAAc,GAAG,UAAU;EAC3B,UAAU,QAAQ,EAA4B;EAC9C,aAAa;EACb,WAAW;EACX,GAAG;CACL;AACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const getChatbotHandlers: (backendOrigin?: string) =>
|
|
1
|
+
export declare const getChatbotHandlers: (backendOrigin?: string) => import("msw").HttpHandler[];
|
|
2
2
|
//# sourceMappingURL=chatHandlers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatHandlers.d.ts","sourceRoot":"","sources":["../../../../src/mocks/msw/handlers/chatHandlers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chatHandlers.d.ts","sourceRoot":"","sources":["../../../../src/mocks/msw/handlers/chatHandlers.ts"],"names":[],"mappings":"AAkDA,eAAO,MAAM,kBAAkB,GAC7B,sBAAiE,gCAwClE,CAAA"}
|
|
@@ -5,14 +5,28 @@ import { generateAsyncJobHandlers as c } from "./asyncJobHandlers.js";
|
|
|
5
5
|
import { mockAgentChatResponse as l, mockAgentSession as u, mockChatSessionId as d, mockEmptyTraceEventsResponse as f, mockListAgentSessionsResponse as p, mockSessionHistoryResponse as m, mockTraceEventsResponse1 as h, mockTraceEventsResponse2 as g, mockTraceEventsResponse3 as _ } from "../../chat/mockChat.js";
|
|
6
6
|
import { HttpResponse as v, http as y } from "msw";
|
|
7
7
|
//#region src/mocks/msw/handlers/chatHandlers.ts
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
function b(e) {
|
|
9
|
+
return !e.attachments || e.attachments.length === 0 ? l : {
|
|
10
|
+
...l,
|
|
11
|
+
attachmentStatuses: e.attachments.map((e, t) => t === 0 ? {
|
|
12
|
+
fileHandleId: e.fileHandleId,
|
|
13
|
+
status: "FAILED",
|
|
14
|
+
failureCode: "UNSUPPORTED_TYPE",
|
|
15
|
+
failureMessage: "This file type is not supported."
|
|
16
|
+
} : {
|
|
17
|
+
fileHandleId: e.fileHandleId,
|
|
18
|
+
status: "STAGED"
|
|
19
|
+
})
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
var x = 0, S = (l = t(e.REPO_ENDPOINT)) => [
|
|
23
|
+
y.post(`${l}${r}`, () => v.json(u, { status: 201 })),
|
|
24
|
+
y.post(`${l}${o}`, () => v.json(p, { status: 201 })),
|
|
25
|
+
y.post(`${l}${i(d)}`, () => v.json(m, { status: 201 })),
|
|
26
|
+
...c(s, (e) => a(e), b, l),
|
|
27
|
+
y.post(`${l}${n(":id")}`, () => (x++, x == 1 ? v.json(h, { status: 201 }) : x == 5 ? v.json(g, { status: 201 }) : x == 8 ? v.json(_, { status: 201 }) : v.json(f, { status: 201 })))
|
|
14
28
|
];
|
|
15
29
|
//#endregion
|
|
16
|
-
export {
|
|
30
|
+
export { S as getChatbotHandlers };
|
|
17
31
|
|
|
18
32
|
//# sourceMappingURL=chatHandlers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatHandlers.js","names":[],"sources":["../../../../src/mocks/msw/handlers/chatHandlers.ts"],"sourcesContent":["import {\n mockAgentChatResponse,\n mockAgentSession,\n mockChatSessionId,\n mockEmptyTraceEventsResponse,\n mockListAgentSessionsResponse,\n mockSessionHistoryResponse,\n mockTraceEventsResponse1,\n mockTraceEventsResponse2,\n mockTraceEventsResponse3,\n} from '@/mocks/chat/mockChat'\nimport {\n AGENT_CHAT_TRACE,\n AGENT_SESSION,\n AGENT_SESSION_HISTORY,\n GET_CHAT_ASYNC,\n LIST_AGENT_SESSIONS,\n START_CHAT_ASYNC,\n} from '@/utils/APIConstants'\nimport { BackendDestinationEnum, getEndpoint } from '@/utils/functions'\nimport {\n AgentChatRequest,\n AgentChatResponse,\n} from '@sage-bionetworks/synapse-
|
|
1
|
+
{"version":3,"file":"chatHandlers.js","names":[],"sources":["../../../../src/mocks/msw/handlers/chatHandlers.ts"],"sourcesContent":["import {\n mockAgentChatResponse,\n mockAgentSession,\n mockChatSessionId,\n mockEmptyTraceEventsResponse,\n mockListAgentSessionsResponse,\n mockSessionHistoryResponse,\n mockTraceEventsResponse1,\n mockTraceEventsResponse2,\n mockTraceEventsResponse3,\n} from '@/mocks/chat/mockChat'\nimport {\n AGENT_CHAT_TRACE,\n AGENT_SESSION,\n AGENT_SESSION_HISTORY,\n GET_CHAT_ASYNC,\n LIST_AGENT_SESSIONS,\n START_CHAT_ASYNC,\n} from '@/utils/APIConstants'\nimport { BackendDestinationEnum, getEndpoint } from '@/utils/functions'\nimport {\n AgentChatRequest,\n AgentChatResponse,\n} from '@sage-bionetworks/synapse-client'\nimport { http, HttpResponse } from 'msw'\nimport { generateAsyncJobHandlers } from './asyncJobHandlers'\n\nfunction buildMockChatResponse(request: AgentChatRequest): AgentChatResponse {\n if (!request.attachments || request.attachments.length === 0) {\n return mockAgentChatResponse\n }\n return {\n ...mockAgentChatResponse,\n attachmentStatuses: request.attachments.map((attachment, index) =>\n index === 0\n ? {\n fileHandleId: attachment.fileHandleId,\n status: 'FAILED',\n failureCode: 'UNSUPPORTED_TYPE',\n failureMessage: 'This file type is not supported.',\n }\n : {\n fileHandleId: attachment.fileHandleId,\n status: 'STAGED',\n },\n ),\n }\n}\n\nlet traceCallCount = 0\nexport const getChatbotHandlers = (\n backendOrigin = getEndpoint(BackendDestinationEnum.REPO_ENDPOINT),\n) => [\n http.post(`${backendOrigin}${AGENT_SESSION}`, () => {\n return HttpResponse.json(mockAgentSession, { status: 201 })\n }),\n\n //list chat sessions\n http.post(`${backendOrigin}${LIST_AGENT_SESSIONS}`, () => {\n // const request: ListAgentSessionsRequest = await request.json()\n return HttpResponse.json(mockListAgentSessionsResponse, { status: 201 })\n }),\n\n //session history\n http.post(\n `${backendOrigin}${AGENT_SESSION_HISTORY(mockChatSessionId)}`,\n () => {\n return HttpResponse.json(mockSessionHistoryResponse, { status: 201 })\n },\n ),\n //Async job to send chat message to the agent\n ...generateAsyncJobHandlers<AgentChatRequest, AgentChatResponse>(\n START_CHAT_ASYNC,\n tokenParam => GET_CHAT_ASYNC(tokenParam),\n buildMockChatResponse,\n backendOrigin,\n ),\n\n //trace events\n http.post(`${backendOrigin}${AGENT_CHAT_TRACE(':id')}`, () => {\n //mock showing progress (increasing number of items)\n traceCallCount++\n if (traceCallCount == 1) {\n return HttpResponse.json(mockTraceEventsResponse1, { status: 201 })\n } else if (traceCallCount == 5) {\n return HttpResponse.json(mockTraceEventsResponse2, { status: 201 })\n } else if (traceCallCount == 8) {\n return HttpResponse.json(mockTraceEventsResponse3, { status: 201 })\n } else\n return HttpResponse.json(mockEmptyTraceEventsResponse, { status: 201 })\n }),\n]\n"],"mappings":";;;;;;;AA2BA,SAAS,EAAsB,GAA8C;CAI3E,OAHI,CAAC,EAAQ,eAAe,EAAQ,YAAY,WAAW,IAClD,IAEF;EACL,GAAG;EACH,oBAAoB,EAAQ,YAAY,KAAK,GAAY,MACvD,MAAU,IACN;GACE,cAAc,EAAW;GACzB,QAAQ;GACR,aAAa;GACb,gBAAgB;EAClB,IACA;GACE,cAAc,EAAW;GACzB,QAAQ;EACV,CACN;CACF;AACF;AAEA,IAAI,IAAiB,GACR,KACX,IAAgB,EAAY,EAAuB,aAAa,MAC7D;CACH,EAAK,KAAK,GAAG,IAAgB,WACpB,EAAa,KAAK,GAAkB,EAAE,QAAQ,IAAI,CAAC,CAC3D;CAGD,EAAK,KAAK,GAAG,IAAgB,WAEpB,EAAa,KAAK,GAA+B,EAAE,QAAQ,IAAI,CAAC,CACxE;CAGD,EAAK,KACH,GAAG,IAAgB,EAAsB,CAAiB,WAEjD,EAAa,KAAK,GAA4B,EAAE,QAAQ,IAAI,CAAC,CAExE;CAEA,GAAG,EACD,IACA,MAAc,EAAe,CAAU,GACvC,GACA,CACF;CAGA,EAAK,KAAK,GAAG,IAAgB,EAAiB,KAAK,YAEjD,KACI,KAAkB,IACb,EAAa,KAAK,GAA0B,EAAE,QAAQ,IAAI,CAAC,IACzD,KAAkB,IACpB,EAAa,KAAK,GAA0B,EAAE,QAAQ,IAAI,CAAC,IACzD,KAAkB,IACpB,EAAa,KAAK,GAA0B,EAAE,QAAQ,IAAI,CAAC,IAE3D,EAAa,KAAK,GAA8B,EAAE,QAAQ,IAAI,CAAC,EACzE;AACH"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BackendDestinationEnum } from '@/utils/functions/getEndpoint';
|
|
2
|
-
import { DoiAssociation, EntityType, OAuthValidationRequestProviderEnum, ViewEntityType, SearchIndexQuery, SearchQueryResults } from '@sage-bionetworks/synapse-client';
|
|
2
|
+
import { DoiAssociation, EntityType, OAuthValidationRequestProviderEnum, ViewEntityType, SearchIndexQuery, SearchQueryResults, AgentChatRequest, AgentChatResponse } from '@sage-bionetworks/synapse-client';
|
|
3
3
|
import { TwoFactorAuthErrorResponse } from '@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse';
|
|
4
|
-
import { ACCESS_TYPE, AccessApproval, AccessApprovalSearchRequest, AccessApprovalSearchResponse, AccessCodeResponse, AccessControlList, AccessRequirement, AccessRequirementSearchRequest, AccessRequirementSearchResponse, AccessRequirementStatus, AccessToken, AccessTokenGenerationRequest, AccessTokenGenerationResponse, AccessTokenRecordList, AccountSetupInfo, ActionRequiredCount, ActionRequiredList, ActionRequiredRequest, ActionRequiredResponse, Activity, ACTSubmissionStatus, AddBatchOfFilesToDownloadListResponse, AddToDownloadListRequest, AddToDownloadListResponse,
|
|
4
|
+
import { ACCESS_TYPE, AccessApproval, AccessApprovalSearchRequest, AccessApprovalSearchResponse, AccessCodeResponse, AccessControlList, AccessRequirement, AccessRequirementSearchRequest, AccessRequirementSearchResponse, AccessRequirementStatus, AccessToken, AccessTokenGenerationRequest, AccessTokenGenerationResponse, AccessTokenRecordList, AccountSetupInfo, ActionRequiredCount, ActionRequiredList, ActionRequiredRequest, ActionRequiredResponse, Activity, ACTSubmissionStatus, AddBatchOfFilesToDownloadListResponse, AddToDownloadListRequest, AddToDownloadListResponse, AgentSession, AliasCheckRequest, AliasCheckResponse, AsynchronousJobStatus, AuthenticatedOn, AvailableFilesRequest, AvailableFilesResponse, BatchFileRequest, BatchFileResult, BulkFileDownloadRequest, BulkFileDownloadResponse, Challenge, ChallengePagedResults, ChallengeTeam, ChallengeTeamPagedResults, ChangePasswordWithCurrentPassword, ChangePasswordWithToken, ChangePasswordWithTwoFactorAuthToken, ColumnModel, CreateAccessApprovalRequest, CreateAgentSessionRequest, CreateChallengeTeamRequest, CreateDiscussionReply, CreateDiscussionThread, CreateMembershipInvitationRequest, CreateMembershipRequestRequest, CreateSubmissionRequest, CreateTeamRequest, Direction, DiscussionFilter, DiscussionReplyBundle, DiscussionReplyOrder, DiscussionSearchRequest, DiscussionSearchResponse, DiscussionThreadBundle, DiscussionThreadOrder, DockerCommit, Doi, DownloadFromTableRequest, DownloadFromTableResult, DownloadList, DownloadListPackageResponse, DownloadOrder, DownloadPFBRequest, DownloadPFBResult, EmailValidationSignedToken, Entity, EntityBundle, EntityBundleRequest, EntityChildrenRequest, EntityChildrenResponse, EntityHeader, EntityId, EntityJson, EntityLookupRequest, EntityPath, Evaluation, EvaluationRound, EvaluationRoundListRequest, EvaluationRoundListResponse, EvaluationSubmission as EvaluationSubmission, FavoriteSortBy, FavoriteSortDirection, FileEntity, FileHandle, FileHandleAssociateType, FileHandleAssociation, FileHandleResults, FileResult, FilesStatisticsResponse, FileUploadComplete, FormData, FormGroup, Forum, GetEvaluationParameters, GetProjectsParameters, HasAccessResponse, InviteeVerificationSignedToken, JoinTeamSignedToken, JsonSchemaObjectBinding, ListAgentSessionsRequest, ListAgentSessionsResponse, ListRequest, ListResponse, ListWrapper, LoginResponse, ManagedACTAccessRequirementStatus, MembershipInvitation, MembershipInvtnSignedToken, MembershipRequest, MessageToUser, MessageURL, MultipartUploadRequest, MultipartUploadStatus, NewUser, NotificationEmail, OAuthClient, OAuthClientIdAndSecret, OAuthClientList, OAuthClientPublic, OAuthClientVerificationPrecheckResult, OAuthConsentGrantedResponse, ObjectType, OIDCAuthorizationRequest, OIDCAuthorizationRequestDescription, PaginatedIds, PaginatedResults, PassingRecord, PrincipalAliasRequest, PrincipalAliasResponse, ProjectFilesStatisticsRequest, ProjectFilesStatisticsResponse, ProjectHeaderList, ProjectStorageUsage, QueryBundleRequest, QueryResultBundle, QueryTableResults, Quiz, QuizResponse, ReferenceList, RemoveBatchOfFilesFromDownloadListRequest, RemoveBatchOfFilesFromDownloadListResponse, Renewal, Request, ResearchProject, ResponseMessage, RestrictableObjectDescriptor, RestrictionInformationBatchRequest, RestrictionInformationBatchResponse, RestrictionInformationRequest, RestrictionInformationResponse, SearchQuery, SearchResults, SessionHistoryRequest, SessionHistoryResponse, SortBy, Submission as DataAccessSubmission, SubmissionInfoPage, SubmissionInfoPageRequest, SubmissionSearchRequest, SubmissionSearchResponse, SubmissionStateChangeRequest, SubscriberPagedResults, Subscription, SubscriptionPagedResults, SubscriptionQuery, SubscriptionRequest, SynapseVersion, TableUpdateTransactionRequest, Team, TeamMember, TeamMembershipStatus, TeamSubmissionEligibility, TermsOfServiceInfo, TermsOfServiceStatus, Topic, TotpSecret, TotpSecretActivationRequest, TraceEventsRequest, TraceEventsResponse, TrashedEntity, TwoFactorAuthDisableRequest, TwoFactorAuthLoginRequest, TwoFactorAuthRecoveryCodes, TwoFactorAuthResetRequest, TwoFactorAuthStatus, TYPE_FILTER, UpdateAgentSessionRequest, UpdateDiscussionReply, UpdateThreadMessageRequest, UpdateThreadTitleRequest, UploadDestination, UserBundle, UserEntityPermissions, UserEvaluationPermissions, UserGroupHeaderResponse, UserGroupHeaderResponsePage, UserProfile, ValidateDefiningSqlResponse, ValidationResults, VerificationState, VerificationSubmission, VersionInfo, ViewColumnModelRequest, WikiPage, WikiPageKey } from '@sage-bionetworks/synapse-types';
|
|
5
5
|
import { JSONSchema7 } from 'json-schema';
|
|
6
6
|
import { SetOptional } from 'type-fest';
|
|
7
7
|
import { OAuth2State } from '@/utils/types/OAuth2State';
|