synapse-react-client 4.0.3 → 4.0.5

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.
Files changed (338) hide show
  1. package/dist/SWC.index.js +1 -1
  2. package/dist/assets/DefaultColorfulPortalCardBackground.svg +14 -0
  3. package/dist/assets/DefaultColorfulPortalCardBackground.svg.js +7 -0
  4. package/dist/assets/DefaultColorfulPortalCardBackground.svg.js.map +1 -0
  5. package/dist/assets/homepage/nih-aging.svg +27 -27
  6. package/dist/assets/homepage/nih-aging.svg.js +1 -1
  7. package/dist/assets/homepage/nih-aging.svg.js.map +1 -1
  8. package/dist/assets/homepage/nih-heart.svg +39 -46
  9. package/dist/assets/homepage/nih-heart.svg.js +3 -3
  10. package/dist/assets/homepage/nih-heart.svg.js.map +1 -1
  11. package/dist/assets/homepage/nih-nci.svg +6 -0
  12. package/dist/assets/homepage/nih-nci.svg.js +7 -0
  13. package/dist/assets/homepage/nih-nci.svg.js.map +1 -0
  14. package/dist/assets/homepage/nih-nimh.svg +14 -0
  15. package/dist/assets/homepage/nih-nimh.svg.js +7 -0
  16. package/dist/assets/homepage/nih-nimh.svg.js.map +1 -0
  17. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js +1 -1
  18. package/dist/components/AccessRequirementList/AccessRequirementList.js +4 -4
  19. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.d.ts.map +1 -1
  20. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js +8 -7
  21. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js.map +1 -1
  22. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.js +4 -4
  23. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItem.js +11 -11
  24. package/dist/components/AccessRequirementList/RequirementItem/RequirementItem.js +1 -1
  25. package/dist/components/AccessRequirementList/RequirementItem/SelfSignAccessRequirementItem.js +9 -9
  26. package/dist/components/AccessRequirementList/RequirementItem/UnmanagedACTAccessRequirementItem.js +5 -5
  27. package/dist/components/AcknowledgementsPage/AcknowledgementsPage.d.ts.map +1 -1
  28. package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js +33 -32
  29. package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js.map +1 -1
  30. package/dist/components/AclEditor/AclEditor.js +8 -8
  31. package/dist/components/AclEditor/AclEditor.js.map +1 -1
  32. package/dist/components/AclEditor/AclEditor.test-utils.js +34 -34
  33. package/dist/components/AclEditor/AclEditor.test-utils.js.map +1 -1
  34. package/dist/components/Authentication/AuthenticationMethodSelection.js +1 -1
  35. package/dist/components/Authentication/TwoFactorEnrollmentForm.d.ts.map +1 -1
  36. package/dist/components/Authentication/TwoFactorEnrollmentForm.js +6 -5
  37. package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
  38. package/dist/components/BasePortalCard/BasePortalCard.css +1 -1
  39. package/dist/components/BasePortalCard/BasePortalCard.d.ts +1 -1
  40. package/dist/components/BasePortalCard/BasePortalCard.d.ts.map +1 -1
  41. package/dist/components/BasePortalCard/BasePortalCard.js +12 -12
  42. package/dist/components/BasePortalCard/BasePortalCard.js.map +1 -1
  43. package/dist/components/BasePortalCard/BasePortalCard.module.scss +6 -0
  44. package/dist/components/BasePortalCard/BasePortalCard.module.scss.js +1 -1
  45. package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.css +1 -1
  46. package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.d.ts.map +1 -1
  47. package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.js +24 -23
  48. package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.js.map +1 -1
  49. package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.module.scss +15 -5
  50. package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.module.scss.js +1 -1
  51. package/dist/components/CardContainer/CardLink.d.ts +12 -0
  52. package/dist/components/CardContainer/CardLink.d.ts.map +1 -1
  53. package/dist/components/ChallengeSubmission/AvailableEvaluationQueueList.js +12 -12
  54. package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.d.ts.map +1 -1
  55. package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js +7 -7
  56. package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js.map +1 -1
  57. package/dist/components/CitationPopover/CitationPopoverContent.d.ts.map +1 -1
  58. package/dist/components/CitationPopover/CitationPopoverContent.js +13 -12
  59. package/dist/components/CitationPopover/CitationPopoverContent.js.map +1 -1
  60. package/dist/components/CookiesNotification/CookiesNotification.js +1 -1
  61. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js +3 -4
  62. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js.map +1 -1
  63. package/dist/components/DataGrid/MergeGridWithSourceTableButton.js +2 -2
  64. package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
  65. package/dist/components/DataGrid/SynapseGrid.js +35 -35
  66. package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
  67. package/dist/components/DataGrid/components/UploadCsvToGridDialog.js +2 -2
  68. package/dist/components/DataGrid/hooks/useExportDataGridToCsv.d.ts.map +1 -1
  69. package/dist/components/DataGrid/hooks/useExportDataGridToCsv.js +9 -7
  70. package/dist/components/DataGrid/hooks/useExportDataGridToCsv.js.map +1 -1
  71. package/dist/components/DownloadCart/ActionRequiredCard/ActionRequiredCard.js +1 -1
  72. package/dist/components/DownloadCart/RequestDownloadCard.js +1 -1
  73. package/dist/components/Ecosystem/EcosystemSkeleton.js +2 -2
  74. package/dist/components/Ecosystem/TableQueryEcosystem.js +1 -1
  75. package/dist/components/EntityAclEditor/EntityAclEditorModal.js +1 -1
  76. package/dist/components/EntityAclEditor/OpenData.js +1 -1
  77. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.d.ts.map +1 -1
  78. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js +113 -127
  79. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js.map +1 -1
  80. package/dist/components/EntityCitation/EntityCitation.js +1 -1
  81. package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js +1 -1
  82. package/dist/components/EntityFinder/details/view/table/CreatedOnCell.js +1 -1
  83. package/dist/components/EntityFinder/details/view/table/EntityNameCell.js +1 -1
  84. package/dist/components/EntityFinder/details/view/table/FileEntityMD5Cell.js +1 -1
  85. package/dist/components/EntityFinder/details/view/table/FileEntitySizeCell.js +1 -1
  86. package/dist/components/EntityFinder/details/view/table/ModifiedByCell.js +1 -1
  87. package/dist/components/EntityFinder/details/view/table/ModifiedOnCell.js +1 -1
  88. package/dist/components/EntityFinder/details/view/table/ParentProjectCell.js +1 -1
  89. package/dist/components/EntityFinder/tree/EntityTree.js +1 -1
  90. package/dist/components/EntityHeaderTable/EntityHeaderTable.d.ts.map +1 -1
  91. package/dist/components/EntityHeaderTable/EntityHeaderTable.js +39 -39
  92. package/dist/components/EntityHeaderTable/EntityHeaderTable.js.map +1 -1
  93. package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.d.ts +8 -0
  94. package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.d.ts.map +1 -0
  95. package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.js +46 -0
  96. package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.js.map +1 -0
  97. package/dist/components/Evaluation/EvaluationCard.d.ts.map +1 -1
  98. package/dist/components/Evaluation/EvaluationCard.js +35 -41
  99. package/dist/components/Evaluation/EvaluationCard.js.map +1 -1
  100. package/dist/components/Evaluation/EvaluationEditor.d.ts.map +1 -1
  101. package/dist/components/Evaluation/EvaluationEditor.js +95 -90
  102. package/dist/components/Evaluation/EvaluationEditor.js.map +1 -1
  103. package/dist/components/Evaluation/EvaluationRoundEditor.d.ts.map +1 -1
  104. package/dist/components/Evaluation/EvaluationRoundEditor.js +133 -124
  105. package/dist/components/Evaluation/EvaluationRoundEditor.js.map +1 -1
  106. package/dist/components/FilePreview/EntityPreview.js +1 -1
  107. package/dist/components/Forum/DiscussionReply.js +10 -10
  108. package/dist/components/Forum/DiscussionThread.js +21 -21
  109. package/dist/components/GenericCard/CardUtils.d.ts.map +1 -1
  110. package/dist/components/GenericCard/CardUtils.js +36 -36
  111. package/dist/components/GenericCard/CardUtils.js.map +1 -1
  112. package/dist/components/GenericCard/CollapsibleDescription.js +25 -25
  113. package/dist/components/GenericCard/SynapseCardLabel.d.ts.map +1 -1
  114. package/dist/components/GenericCard/SynapseCardLabel.js +72 -67
  115. package/dist/components/GenericCard/SynapseCardLabel.js.map +1 -1
  116. package/dist/components/GenericCard/TableRowGenericCard.d.ts +4 -1
  117. package/dist/components/GenericCard/TableRowGenericCard.d.ts.map +1 -1
  118. package/dist/components/GenericCard/TableRowGenericCard.js +98 -96
  119. package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
  120. package/dist/components/GoalsV2/GoalsV2.Desktop.d.ts.map +1 -1
  121. package/dist/components/GoalsV2/GoalsV2.Desktop.js +14 -15
  122. package/dist/components/GoalsV2/GoalsV2.Desktop.js.map +1 -1
  123. package/dist/components/GoogleAnalytics/GoogleAnalytics.js +1 -1
  124. package/dist/components/HasAccess/HasAccessV2.js +1 -1
  125. package/dist/components/HasAccess/useHasAccess.js +1 -1
  126. package/dist/components/IDUReport/IDUReportSubmissionInfo.js +23 -23
  127. package/dist/components/IDUReport/IDUReportSubmissionInfo.js.map +1 -1
  128. package/dist/components/JSONArrayEditor/useParseCsv.d.ts +1 -1
  129. package/dist/components/JSONArrayEditor/useParseCsv.d.ts.map +1 -1
  130. package/dist/components/JSONArrayEditor/useParseCsv.js +9 -9
  131. package/dist/components/JSONArrayEditor/useParseCsv.js.map +1 -1
  132. package/dist/components/Markdown/MarkdownCollapse.js +7 -7
  133. package/dist/components/Markdown/MarkdownEditor.js +11 -11
  134. package/dist/components/Markdown/MarkdownGithub.js +1 -1
  135. package/dist/components/Markdown/MarkdownPopover.js +6 -6
  136. package/dist/components/Markdown/MarkdownPopover.js.map +1 -1
  137. package/dist/components/Markdown/MarkdownSynapse.d.ts.map +1 -1
  138. package/dist/components/Markdown/MarkdownSynapse.js +139 -135
  139. package/dist/components/Markdown/MarkdownSynapse.js.map +1 -1
  140. package/dist/components/Markdown/MarkdownUtils.d.ts +8 -0
  141. package/dist/components/Markdown/MarkdownUtils.d.ts.map +1 -1
  142. package/dist/components/Markdown/MarkdownUtils.js +139 -65
  143. package/dist/components/Markdown/MarkdownUtils.js.map +1 -1
  144. package/dist/components/Markdown/UserMentionModal.js +18 -18
  145. package/dist/components/Markdown/UserMentionModal.js.map +1 -1
  146. package/dist/components/Markdown/widget/MarkdownButton.js +3 -3
  147. package/dist/components/Markdown/widget/MarkdownButton.js.map +1 -1
  148. package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.d.ts.map +1 -1
  149. package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js +9 -8
  150. package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js.map +1 -1
  151. package/dist/components/Plot/SynapsePlot.css +1 -0
  152. package/dist/components/Plot/SynapsePlot.d.ts +2 -0
  153. package/dist/components/Plot/SynapsePlot.d.ts.map +1 -1
  154. package/dist/components/Plot/SynapsePlot.js +43 -39
  155. package/dist/components/Plot/SynapsePlot.js.map +1 -1
  156. package/dist/components/Plot/SynapsePlot.scss +8 -0
  157. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js +1 -1
  158. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
  159. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +114 -113
  160. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
  161. package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.d.ts +1 -1
  162. package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.d.ts.map +1 -1
  163. package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.js.map +1 -1
  164. package/dist/components/Resources/Resources.Desktop.js +7 -7
  165. package/dist/components/Resources/Resources.Mobile.js +6 -6
  166. package/dist/components/SubsectionRowRenderer/SubsectionRowRenderer.js +3 -3
  167. package/dist/components/SustainabilityScorecard/SustainabilityScorecardSummary.js +10 -10
  168. package/dist/components/SynapseChat/SynapseChatInteraction.js +5 -5
  169. package/dist/components/SynapseForm/WarningDialog.d.ts +1 -0
  170. package/dist/components/SynapseForm/WarningDialog.d.ts.map +1 -1
  171. package/dist/components/SynapseForm/WarningDialog.js +18 -16
  172. package/dist/components/SynapseForm/WarningDialog.js.map +1 -1
  173. package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.js +1 -1
  174. package/dist/components/SynapseHomepageV2/SynapsePartners.d.ts.map +1 -1
  175. package/dist/components/SynapseHomepageV2/SynapsePartners.js +17 -12
  176. package/dist/components/SynapseHomepageV2/SynapsePartners.js.map +1 -1
  177. package/dist/components/SynapsePortalBanners/SynapsePortalBanners.d.ts.map +1 -1
  178. package/dist/components/SynapsePortalBanners/SynapsePortalBanners.js +39 -39
  179. package/dist/components/SynapsePortalBanners/SynapsePortalBanners.js.map +1 -1
  180. package/dist/components/SynapseSearchPageResults/HasAccessChip.js +1 -1
  181. package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.d.ts.map +1 -1
  182. package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.js +21 -22
  183. package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.js.map +1 -1
  184. package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.js +5 -5
  185. package/dist/components/SynapseTable/ExpandableTableDataCell.d.ts.map +1 -1
  186. package/dist/components/SynapseTable/ExpandableTableDataCell.js +3 -1
  187. package/dist/components/SynapseTable/ExpandableTableDataCell.js.map +1 -1
  188. package/dist/components/SynapseTable/SynapseTable.js +4 -4
  189. package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.d.ts.map +1 -1
  190. package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.js +122 -122
  191. package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.js.map +1 -1
  192. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +5 -5
  193. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +1 -1
  194. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditor.js +1 -1
  195. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +1 -1
  196. package/dist/components/TableFeedCards/TableFeedCards.js +9 -9
  197. package/dist/components/TermsAndConditions/TermsAndConditionsItem.js +10 -10
  198. package/dist/components/TimelinePlot/TimelinePlotSpeciesSelector.js +9 -9
  199. package/dist/components/UserSearchBox/UserSearchBox.d.ts +23 -0
  200. package/dist/components/UserSearchBox/UserSearchBox.d.ts.map +1 -0
  201. package/dist/components/UserSearchBox/UserSearchBox.js +146 -0
  202. package/dist/components/UserSearchBox/UserSearchBox.js.map +1 -0
  203. package/dist/components/WikiMarkdownEditorButton/WikiMarkdownEditorButton.js +13 -13
  204. package/dist/components/WizardChoiceButton/WizardChoiceButton.js +3 -3
  205. package/dist/components/dataaccess/AccessHistoryDashboard.js +5 -5
  206. package/dist/components/dataaccess/AccessHistoryDashboard.js.map +1 -1
  207. package/dist/components/dataaccess/AccessRequirementDashboard.js +4 -4
  208. package/dist/components/dataaccess/AccessRequirementDashboard.js.map +1 -1
  209. package/dist/components/dataaccess/AccessSubmissionDashboard.js +1 -1
  210. package/dist/components/dataaccess/AccessSubmissionDashboard.js.map +1 -1
  211. package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js +5 -5
  212. package/dist/components/dataaccess/UseAccessRequirementTable.js +3 -3
  213. package/dist/components/dataaccess/UseAccessRequirementTable.js.map +1 -1
  214. package/dist/components/doi/CreateOrUpdateDoiModal.js +1 -1
  215. package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js +2 -2
  216. package/dist/components/entity/metadata/EntityModal.js +1 -1
  217. package/dist/components/entity/metadata/MetadataTable.js +1 -1
  218. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js +1 -1
  219. package/dist/components/entity/page/title_bar/EntityTitleBarVersionInfo.js +1 -1
  220. package/dist/components/entity/page/title_bar/TitleBarProperties.js +1 -1
  221. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.d.ts.map +1 -1
  222. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js +27 -26
  223. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
  224. package/dist/components/index.js +109 -107
  225. package/dist/components/index.js.map +1 -1
  226. package/dist/components/layout/InfiniteTableLayout.js +1 -1
  227. package/dist/components/styled/HoverPopover.css +1 -0
  228. package/dist/components/styled/HoverPopover.d.ts +28 -0
  229. package/dist/components/styled/HoverPopover.d.ts.map +1 -0
  230. package/dist/components/styled/HoverPopover.js +103 -0
  231. package/dist/components/styled/HoverPopover.js.map +1 -0
  232. package/dist/components/styled/HoverPopover.module.scss +9 -0
  233. package/dist/components/styled/HoverPopover.module.scss.js +10 -0
  234. package/dist/components/styled/HoverPopover.module.scss.js.map +1 -0
  235. package/dist/components/styled/index.d.ts +2 -0
  236. package/dist/components/styled/index.d.ts.map +1 -1
  237. package/dist/components/styled/index.js +11 -9
  238. package/dist/components/styled/index.js.map +1 -1
  239. package/dist/components/table/CsvPreview/CsvPreview.js +2 -2
  240. package/dist/components/table/CsvPreview/CsvPreviewDialog.js +2 -2
  241. package/dist/components/widgets/Range.js +1 -1
  242. package/dist/components/widgets/facet-nav/FacetNavPanel.d.ts.map +1 -1
  243. package/dist/components/widgets/facet-nav/FacetNavPanel.js +35 -32
  244. package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
  245. package/dist/components/widgets/facet-nav/PlotsContainer.d.ts +1 -1
  246. package/dist/components/widgets/facet-nav/PlotsContainer.d.ts.map +1 -1
  247. package/dist/components/widgets/facet-nav/PlotsContainer.js +69 -68
  248. package/dist/components/widgets/facet-nav/PlotsContainer.js.map +1 -1
  249. package/dist/components/widgets/facet-nav/useFacetPlots.d.ts.map +1 -1
  250. package/dist/components/widgets/facet-nav/useFacetPlots.js +24 -21
  251. package/dist/components/widgets/facet-nav/useFacetPlots.js.map +1 -1
  252. package/dist/components/widgets/query-filter/FacetFilterControls.js +3 -3
  253. package/dist/features/curator/GridPage/GridPage.js +2 -2
  254. package/dist/features/curator/GridPage/components/GridPageTitle.js +2 -2
  255. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js +1 -1
  256. package/dist/index.js +157 -155
  257. package/dist/index.js.map +1 -1
  258. package/dist/mocks/msw/handlers/accessRequirementHandlers.js +5 -5
  259. package/dist/mocks/msw/handlers/projectStorageHandlers.js +5 -5
  260. package/dist/mocks/msw/handlers/wikiHandlers.js +1 -1
  261. package/dist/mocks/msw/handlers.d.ts.map +1 -1
  262. package/dist/mocks/msw/handlers.js +67 -59
  263. package/dist/mocks/msw/handlers.js.map +1 -1
  264. package/dist/style/base/_core.scss +0 -1
  265. package/dist/style/components/_all.scss +0 -1
  266. package/dist/style/components/_entity-badge.scss +0 -2
  267. package/dist/style/components/_expandable_table_data.scss +3 -3
  268. package/dist/style/components/facet_nav/_facet-nav-panel.scss +3 -0
  269. package/dist/style/components/facet_nav/_facet-nav.scss +4 -0
  270. package/dist/style/main.css +1 -1
  271. package/dist/synapse-client/SynapseClient.js +118 -118
  272. package/dist/synapse-client/SynapseClient.js.map +1 -1
  273. package/dist/synapse-queries/auth/useOIDC.js +1 -1
  274. package/dist/synapse-queries/auth/useTwoFactorEnrollment.js +1 -1
  275. package/dist/synapse-queries/entity/index.js +6 -6
  276. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js +1 -1
  277. package/dist/synapse-queries/index.js +1 -1
  278. package/dist/synapse-queries/user/usePersonalAccessToken.js +1 -1
  279. package/dist/testutils/vitest.setup.js +10 -11
  280. package/dist/testutils/vitest.setup.js.map +1 -1
  281. package/dist/theme/DefaultTheme.js +1 -1
  282. package/dist/theme/ThemeProvider.d.ts +2 -1
  283. package/dist/theme/ThemeProvider.d.ts.map +1 -1
  284. package/dist/theme/ThemeProvider.js +11 -10
  285. package/dist/theme/ThemeProvider.js.map +1 -1
  286. package/dist/theme/index.js +1 -1
  287. package/dist/theme/mergeTheme.js +1 -1
  288. package/dist/tsconfig.build.tsbuildinfo +1 -1
  289. package/dist/utils/AppUtils/AppUtils.js +1 -1
  290. package/dist/utils/functions/SanitizeHtmlUtils.d.ts.map +1 -1
  291. package/dist/utils/functions/SanitizeHtmlUtils.js +34 -40
  292. package/dist/utils/functions/SanitizeHtmlUtils.js.map +1 -1
  293. package/dist/utils/functions/deepLinkingUtils.js +10 -10
  294. package/dist/utils/functions/deepLinkingUtils.js.map +1 -1
  295. package/dist/utils/hooks/index.js +6 -6
  296. package/dist/utils/hooks/useDetectSSOCode.js +3 -3
  297. package/dist/utils/hooks/useGetEntityMetadata.js +1 -1
  298. package/dist/utils/hooks/useNativeSearchParams.d.ts.map +1 -1
  299. package/dist/utils/hooks/useNativeSearchParams.js +1 -1
  300. package/dist/utils/hooks/useNativeSearchParams.js.map +1 -1
  301. package/dist/utils/hooks/useOneSageURL.d.ts.map +1 -1
  302. package/dist/utils/hooks/useOneSageURL.js +15 -15
  303. package/dist/utils/hooks/useOneSageURL.js.map +1 -1
  304. package/dist/utils/hooks/useSourceAppConfigs.d.ts +1 -0
  305. package/dist/utils/hooks/useSourceAppConfigs.d.ts.map +1 -1
  306. package/dist/utils/hooks/useSourceAppConfigs.js +79 -77
  307. package/dist/utils/hooks/useSourceAppConfigs.js.map +1 -1
  308. package/dist/utils/index.js +4 -4
  309. package/package.json +14 -15
  310. package/dist/_virtual/index.js +0 -6
  311. package/dist/_virtual/index.js.map +0 -1
  312. package/dist/_virtual/index2.js +0 -5
  313. package/dist/_virtual/index2.js.map +0 -1
  314. package/dist/_virtual/index3.js +0 -5
  315. package/dist/_virtual/index3.js.map +0 -1
  316. package/dist/_virtual/index4.js +0 -5
  317. package/dist/_virtual/index4.js.map +0 -1
  318. package/dist/_virtual/index5.js +0 -5
  319. package/dist/_virtual/index5.js.map +0 -1
  320. package/dist/assets/homepage/nci.svg +0 -6
  321. package/dist/assets/homepage/nci.svg.js +0 -7
  322. package/dist/assets/homepage/nci.svg.js.map +0 -1
  323. package/dist/assets/homepage/nih-mental.svg +0 -9
  324. package/dist/assets/homepage/nih-mental.svg.js +0 -7
  325. package/dist/assets/homepage/nih-mental.svg.js.map +0 -1
  326. package/dist/components/UserSearchBox/UserSearchBoxV2.d.ts +0 -21
  327. package/dist/components/UserSearchBox/UserSearchBoxV2.d.ts.map +0 -1
  328. package/dist/components/UserSearchBox/UserSearchBoxV2.js +0 -144
  329. package/dist/components/UserSearchBox/UserSearchBoxV2.js.map +0 -1
  330. package/dist/node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js +0 -53
  331. package/dist/node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js.map +0 -1
  332. package/dist/node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js +0 -948
  333. package/dist/node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js.map +0 -1
  334. package/dist/node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js +0 -30
  335. package/dist/node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js.map +0 -1
  336. package/dist/node_modules/.pnpm/vite-plugin-node-polyfills@0.17.0_rollup@4.55.1_vite@7.3.1_@types_node@22.19.13_sass@1._2da6e8f78437c36f3eb7db51bdd4d89e/node_modules/vite-plugin-node-polyfills/shims/dist/index.js +0 -15
  337. package/dist/node_modules/.pnpm/vite-plugin-node-polyfills@0.17.0_rollup@4.55.1_vite@7.3.1_@types_node@22.19.13_sass@1._2da6e8f78437c36f3eb7db51bdd4d89e/node_modules/vite-plugin-node-polyfills/shims/dist/index.js.map +0 -1
  338. package/dist/style/components/_user-search-box.scss +0 -30
@@ -1,49 +1,50 @@
1
1
  import { jsx as t, jsxs as h } from "react/jsx-runtime";
2
- import { updateEvaluationRound as K, createEvaluationRound as W, deleteEvaluationRound as Y } from "../../synapse-client/SynapseClient.js";
3
- import { useSynapseContext as $ } from "../../utils/context/SynapseContext.js";
4
- import { useListState as q } from "../../utils/hooks/useListState.js";
5
- import { Card as Q, CardContent as V, Box as u, Grid as v, TextField as X, Button as N, Alert as Z } from "@mui/material";
6
- import l from "dayjs";
7
- import _ from "dayjs/plugin/isSameOrAfter";
8
- import I from "dayjs/plugin/utc";
9
- import { upperFirst as ee } from "lodash-es";
10
- import { useState as c, useEffect as te } from "react";
11
- import C from "../DateTimePicker/DateTimePicker.js";
12
- import { ErrorBanner as re } from "../error/ErrorBanner.js";
13
- import se from "../IconSvg/IconSvg.js";
14
- import { EvaluationRoundEditorDropdown as ie } from "./EvaluationRoundEditorDropdown.js";
15
- import { convertEvaluationRoundToInput as oe } from "./input_models/models.js";
16
- import { EvaluationRoundLimitOptionsList as ne } from "./round_limits/EvaluationRoundLimitOptionsList.js";
17
- l.extend(I);
18
- l.extend(_);
19
- const ae = (e) => {
20
- const a = e.startOf("day");
21
- return (i) => i.isSameOrAfter(a);
22
- }, A = (e, a) => {
23
- let i, s, o;
24
- const n = l();
25
- return n.isSameOrAfter(e) ? n.isBefore(a) ? (i = "status-in-progress", s = { icon: "sync" }, o = "IN PROGRESS") : (i = "status-completed", s = { icon: "clipboardCheck" }, o = "COMPLETED") : (i = "status-not-yet-started", s = void 0, o = "NOT YET STARTED"), /* @__PURE__ */ t("div", { className: i, children: /* @__PURE__ */ h("div", { className: "status", children: [
26
- s && /* @__PURE__ */ t(se, { ...s }),
27
- /* @__PURE__ */ t("span", { children: o })
2
+ import { updateEvaluationRound as Q, createEvaluationRound as V, deleteEvaluationRound as X } from "../../synapse-client/SynapseClient.js";
3
+ import { useGlobalIsEditingContext as Z } from "../../utils/context/GlobalIsEditingContext.js";
4
+ import { useSynapseContext as _ } from "../../utils/context/SynapseContext.js";
5
+ import { useListState as ee } from "../../utils/hooks/useListState.js";
6
+ import { Card as te, CardContent as re, Box as u, Grid as b, TextField as se, Button as N, Alert as ie } from "@mui/material";
7
+ import c from "dayjs";
8
+ import ne from "dayjs/plugin/isSameOrAfter";
9
+ import oe from "dayjs/plugin/utc";
10
+ import { upperFirst as ae } from "lodash-es";
11
+ import { useState as l, useEffect as A } from "react";
12
+ import O from "../DateTimePicker/DateTimePicker.js";
13
+ import { ErrorBanner as de } from "../error/ErrorBanner.js";
14
+ import le from "../IconSvg/IconSvg.js";
15
+ import { EvaluationRoundEditorDropdown as ce } from "./EvaluationRoundEditorDropdown.js";
16
+ import { convertEvaluationRoundToInput as me } from "./input_models/models.js";
17
+ import { EvaluationRoundLimitOptionsList as ue } from "./round_limits/EvaluationRoundLimitOptionsList.js";
18
+ c.extend(oe);
19
+ c.extend(ne);
20
+ const he = (e) => {
21
+ const o = e.startOf("day");
22
+ return (n) => n.isSameOrAfter(o);
23
+ }, B = (e, o) => {
24
+ let n, i, a;
25
+ const d = c();
26
+ return d.isSameOrAfter(e) ? d.isBefore(o) ? (n = "status-in-progress", i = { icon: "sync" }, a = "IN PROGRESS") : (n = "status-completed", i = { icon: "clipboardCheck" }, a = "COMPLETED") : (n = "status-not-yet-started", i = void 0, a = "NOT YET STARTED"), /* @__PURE__ */ t("div", { className: n, children: /* @__PURE__ */ h("div", { className: "status", children: [
27
+ i && /* @__PURE__ */ t(le, { ...i }),
28
+ /* @__PURE__ */ t("span", { children: a })
28
29
  ] }) });
29
- }, O = (e, a, i, s, o) => {
30
- const n = [];
31
- if (s) {
32
- const d = Number(s);
33
- if (Number.isNaN(d))
30
+ }, P = (e, o, n, i, a) => {
31
+ const d = [];
32
+ if (i) {
33
+ const s = Number(i);
34
+ if (Number.isNaN(s))
34
35
  throw TypeError("Total Submission is not an integer");
35
- n.push({
36
+ d.push({
36
37
  limitType: "TOTAL",
37
- maximumSubmissions: d
38
+ maximumSubmissions: s
38
39
  });
39
40
  }
40
- return o.forEach((d) => {
41
- if (d.maxSubmissionString) {
42
- const m = Number(d.maxSubmissionString);
41
+ return a.forEach((s) => {
42
+ if (s.maxSubmissionString) {
43
+ const m = Number(s.maxSubmissionString);
43
44
  if (Number.isNaN(m))
44
- throw TypeError(d.type + " Limit is not an integer");
45
- n.push({
46
- limitType: d.type,
45
+ throw TypeError(s.type + " Limit is not an integer");
46
+ d.push({
47
+ limitType: s.type,
47
48
  maximumSubmissions: m
48
49
  });
49
50
  }
@@ -51,116 +52,122 @@ const ae = (e) => {
51
52
  id: e.id,
52
53
  etag: e.etag,
53
54
  evaluationId: e.evaluationId,
54
- roundStart: l.utc(a).toJSON(),
55
- roundEnd: l.utc(i).toJSON(),
56
- limits: n
55
+ roundStart: c.utc(o).toJSON(),
56
+ roundEnd: c.utc(n).toJSON(),
57
+ limits: d
57
58
  };
58
59
  };
59
- function D(e, a) {
60
- return a == null ? null : a === "disablePast" ? `${ee(e)} date cannot be in the past` : "Invalid date";
60
+ function w(e, o) {
61
+ return o == null ? null : o === "disablePast" ? `${ae(e)} date cannot be in the past` : "Invalid date";
61
62
  }
62
- function Le({
63
+ function Be({
63
64
  evaluationRoundInput: e,
64
- onSave: a,
65
- onDelete: i
65
+ onSave: o,
66
+ onDelete: n
66
67
  }) {
67
- const { accessToken: s } = $(), [o, n] = c(), [d, m] = c(!1);
68
- te(() => {
69
- o && m(!1);
70
- }, [o]);
71
- const [x, w] = c(
72
- e.roundStart ? l(e.roundStart) : null
73
- ), [S, B] = c(
74
- e.roundEnd ? l(e.roundEnd) : null
75
- ), [T, P] = c(
68
+ const { accessToken: i } = _(), { setIsEditing: a } = Z(), [d, s] = l(!1), [m, f] = l(), [k, S] = l(!1);
69
+ A(() => (a(d), () => {
70
+ a(!1);
71
+ }), [d, a]), A(() => {
72
+ m && S(!1);
73
+ }, [m]);
74
+ const [T, F] = l(
75
+ e.roundStart ? c(e.roundStart) : null
76
+ ), [E, M] = l(
77
+ e.roundEnd ? c(e.roundEnd) : null
78
+ ), [y, j] = l(
76
79
  e.totalSubmissionLimit
77
- ), [b, y] = c(!1), [k, F] = c(null), [M, j] = c(null), {
78
- list: p,
79
- handleListRemove: R,
80
- handleListChange: U,
81
- appendToList: z
82
- } = q(e.otherLimits), G = (r) => {
83
- const f = R(r);
80
+ ), [g, L] = l(!1), [R, U] = l(null), [z, G] = l(null), {
81
+ list: v,
82
+ handleListRemove: J,
83
+ handleListChange: H,
84
+ appendToList: I
85
+ } = ee(e.otherLimits), K = (...r) => (s(!0), H(...r)), W = (...r) => (s(!0), I(...r)), Y = (r) => {
86
+ const p = J(r);
84
87
  return () => {
85
- f(), p.length === 1 && y(!1);
88
+ s(!0), p(), v.length === 1 && L(!1);
86
89
  };
87
- }, g = () => {
88
- m(!1);
90
+ }, C = () => {
91
+ S(!1);
89
92
  let r;
90
93
  try {
91
- r = O(
94
+ r = P(
92
95
  e,
93
- x,
94
- S,
95
96
  T,
96
- p
97
+ E,
98
+ y,
99
+ v
97
100
  );
98
- } catch (f) {
99
- n(f);
101
+ } catch (p) {
102
+ f(p);
100
103
  }
101
- r && (r.id ? K(r, s) : W(r, s)).then((E) => {
102
- const H = oe(
103
- E,
104
+ r && (r.id ? Q(r, i) : V(r, i)).then((x) => {
105
+ const q = me(
106
+ x,
104
107
  e.reactListKey
105
108
  );
106
- n(void 0), m(!0), a(H);
107
- }).catch((E) => n(E));
108
- }, J = () => {
109
- e.id ? Y(
109
+ f(void 0), S(!0), s(!1), o(q);
110
+ }).catch((x) => f(x));
111
+ }, $ = () => {
112
+ e.id ? X(
110
113
  e.evaluationId,
111
114
  e.id,
112
- s
113
- ).then(() => i()).catch((r) => n(r)) : i();
114
- }, L = l().isSameOrAfter(
115
+ i
116
+ ).then(() => n()).catch((r) => f(r)) : n();
117
+ }, D = c().isSameOrAfter(
115
118
  e.roundStart
116
119
  );
117
- return /* @__PURE__ */ t("div", { className: "evaluation-round-editor", children: /* @__PURE__ */ t(Q, { children: /* @__PURE__ */ t(V, { sx: { p: 3 }, children: /* @__PURE__ */ h("form", { "aria-label": "Evaluation Round Form", children: [
120
+ return /* @__PURE__ */ t("div", { className: "evaluation-round-editor", children: /* @__PURE__ */ t(te, { children: /* @__PURE__ */ t(re, { sx: { p: 3 }, children: /* @__PURE__ */ h("form", { "aria-label": "Evaluation Round Form", children: [
118
121
  /* @__PURE__ */ h(u, { sx: { display: "flex", justifyContent: "space-between" }, children: [
119
122
  /* @__PURE__ */ h("h5", { children: [
120
123
  "ROUND STATUS",
121
124
  e.id && " (" + e.id + ")"
122
125
  ] }),
123
126
  /* @__PURE__ */ t(
124
- ie,
127
+ ce,
125
128
  {
126
- onDelete: J,
127
- onSave: g
129
+ onDelete: $,
130
+ onSave: C
128
131
  }
129
132
  )
130
133
  ] }),
131
- /* @__PURE__ */ t(u, { className: "round-status", sx: { mb: 2 }, children: A(
134
+ /* @__PURE__ */ t(u, { className: "round-status", sx: { mb: 2 }, children: B(
132
135
  e.roundStart,
133
136
  e.roundEnd
134
137
  ) }),
135
138
  /* @__PURE__ */ t("h5", { children: "DURATION" }),
136
- /* @__PURE__ */ h(v, { container: !0, children: [
137
- /* @__PURE__ */ t(v, { size: 6, children: /* @__PURE__ */ t(
138
- C,
139
+ /* @__PURE__ */ h(b, { container: !0, children: [
140
+ /* @__PURE__ */ t(b, { size: 6, children: /* @__PURE__ */ t(
141
+ O,
139
142
  {
140
143
  label: "Round Start",
141
- value: x,
142
- onChange: w,
143
- onError: (r) => F(r),
144
- disabled: L,
145
- disablePast: !L,
144
+ value: T,
145
+ onChange: (r) => {
146
+ F(r), s(!0);
147
+ },
148
+ onError: (r) => U(r),
149
+ disabled: D,
150
+ disablePast: !D,
146
151
  slotProps: {
147
152
  textField: {
148
- helperText: D("start", k)
153
+ helperText: w("start", R)
149
154
  }
150
155
  }
151
156
  }
152
157
  ) }),
153
- /* @__PURE__ */ t(v, { size: 6, children: /* @__PURE__ */ t(
154
- C,
158
+ /* @__PURE__ */ t(b, { size: 6, children: /* @__PURE__ */ t(
159
+ O,
155
160
  {
156
161
  label: "Round End",
157
- value: S,
158
- onChange: B,
159
- onError: (r) => j(r),
160
- disablePast: !l(S).isSame(e.roundEnd),
162
+ value: E,
163
+ onChange: (r) => {
164
+ M(r), s(!0);
165
+ },
166
+ onError: (r) => G(r),
167
+ disablePast: !c(E).isSame(e.roundEnd),
161
168
  slotProps: {
162
169
  textField: {
163
- helperText: D("end", M)
170
+ helperText: w("end", z)
164
171
  }
165
172
  }
166
173
  }
@@ -168,12 +175,14 @@ function Le({
168
175
  ] }),
169
176
  /* @__PURE__ */ t("h5", { style: { marginTop: "20px" }, children: "SUBMISSION LIMITS" }),
170
177
  /* @__PURE__ */ t(
171
- X,
178
+ se,
172
179
  {
173
180
  fullWidth: !0,
174
181
  label: "Total Submissions / Round",
175
- value: T,
176
- onChange: (r) => P(r.target.value),
182
+ value: y,
183
+ onChange: (r) => {
184
+ j(r.target.value), s(!0);
185
+ },
177
186
  autoComplete: "new-password",
178
187
  slotProps: {
179
188
  htmlInput: {
@@ -188,26 +197,26 @@ function Le({
188
197
  variant: "outlined",
189
198
  color: "primary",
190
199
  size: "small",
191
- onClick: () => y(!b),
200
+ onClick: () => L(!g),
192
201
  children: "Advanced Limits"
193
202
  }
194
203
  ) }),
195
- b && /* @__PURE__ */ t(
196
- ne,
204
+ g && /* @__PURE__ */ t(
205
+ ue,
197
206
  {
198
- limitInputs: p,
199
- handleChange: U,
200
- handleDeleteLimit: G,
201
- onAddNewLimit: z
207
+ limitInputs: v,
208
+ handleChange: K,
209
+ handleDeleteLimit: Y,
210
+ onAddNewLimit: W
202
211
  }
203
212
  ),
204
- o && /* @__PURE__ */ t(u, { sx: { my: 3 }, children: /* @__PURE__ */ t(re, { error: o }) }),
205
- d && /* @__PURE__ */ t(u, { sx: { my: 3 }, children: /* @__PURE__ */ t(
206
- Z,
213
+ m && /* @__PURE__ */ t(u, { sx: { my: 3 }, children: /* @__PURE__ */ t(de, { error: m }) }),
214
+ k && /* @__PURE__ */ t(u, { sx: { my: 3 }, children: /* @__PURE__ */ t(
215
+ ie,
207
216
  {
208
217
  className: "save-success-alert",
209
218
  severity: "success",
210
- onClose: () => m(!1),
219
+ onClose: () => S(!1),
211
220
  sx: { mb: "20px" },
212
221
  children: "Successfully saved."
213
222
  }
@@ -217,19 +226,19 @@ function Le({
217
226
  {
218
227
  variant: "contained",
219
228
  color: "primary",
220
- onClick: g,
229
+ onClick: C,
221
230
  children: "Save"
222
231
  }
223
232
  ) })
224
233
  ] }) }) }) });
225
234
  }
226
- const Ne = {
227
- disallowCalendarDateBefore: ae,
228
- determineRoundStatus: A,
229
- convertInputsToEvaluationRound: O
235
+ const Pe = {
236
+ disallowCalendarDateBefore: he,
237
+ determineRoundStatus: B,
238
+ convertInputsToEvaluationRound: P
230
239
  };
231
240
  export {
232
- Le as EvaluationRoundEditor,
233
- Ne as HelpersToTest
241
+ Be as EvaluationRoundEditor,
242
+ Pe as HelpersToTest
234
243
  };
235
244
  //# sourceMappingURL=EvaluationRoundEditor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EvaluationRoundEditor.js","sources":["../../../src/components/Evaluation/EvaluationRoundEditor.tsx"],"sourcesContent":["import {\n createEvaluationRound,\n deleteEvaluationRound,\n updateEvaluationRound,\n} from '@/synapse-client/SynapseClient'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { useListState } from '@/utils/hooks/useListState'\nimport {\n Alert,\n Box,\n Button,\n Card,\n CardContent,\n Grid as Grid2,\n TextField,\n} from '@mui/material'\nimport { DateTimeValidationError } from '@mui/x-date-pickers'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n EvaluationRound,\n EvaluationRoundLimit,\n} from '@sage-bionetworks/synapse-types'\nimport dayjs, { Dayjs } from 'dayjs'\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter'\nimport utc from 'dayjs/plugin/utc'\nimport { upperFirst } from 'lodash-es'\nimport { useEffect, useState } from 'react'\nimport DateTimePicker from '../DateTimePicker/DateTimePicker'\nimport { ErrorBanner } from '../error/ErrorBanner'\nimport IconSvg, { IconSvgProps } from '../IconSvg/IconSvg'\nimport { EvaluationRoundEditorDropdown } from './EvaluationRoundEditorDropdown'\nimport {\n convertEvaluationRoundToInput,\n EvaluationRoundInput,\n EvaluationRoundLimitInput,\n} from './input_models/models'\nimport { EvaluationRoundLimitOptionsList } from './round_limits/EvaluationRoundLimitOptionsList'\n\ndayjs.extend(utc)\ndayjs.extend(isSameOrAfter)\n\nexport type EvaluationRoundEditorProps = {\n evaluationRoundInput: EvaluationRoundInput\n onDelete: () => void\n onSave: (evaluationRound: EvaluationRoundInput) => void\n}\n\nconst disallowCalendarDateBefore = (date: Dayjs) => {\n const startOfDay = date.startOf('day')\n return (currentDate: Dayjs) => currentDate.isSameOrAfter(startOfDay)\n}\n\nconst determineRoundStatus = (\n roundStart: Dayjs | string,\n roundEnd: Dayjs | string,\n) => {\n let className: string\n let iconProps: IconSvgProps | undefined\n let status: string\n const now = dayjs()\n // based off of start/end datetime from props so that users making\n // unsaved changes to the start/end dates do not change the status\n if (now.isSameOrAfter(roundStart)) {\n if (now.isBefore(roundEnd)) {\n className = 'status-in-progress'\n iconProps = { icon: 'sync' }\n status = 'IN PROGRESS'\n } else {\n className = 'status-completed'\n iconProps = { icon: 'clipboardCheck' }\n status = 'COMPLETED'\n }\n } else {\n className = 'status-not-yet-started'\n iconProps = undefined\n status = 'NOT YET STARTED'\n }\n\n return (\n <div className={className}>\n <div className=\"status\">\n {iconProps && <IconSvg {...iconProps} />}\n <span>{status}</span>\n </div>\n </div>\n )\n}\n\nconst convertInputsToEvaluationRound = (\n evaluationRoundInputProp: EvaluationRoundInput,\n startDate: string | Dayjs | null,\n endDate: string | Dayjs | null,\n totalSubmissionLimit: string,\n advancedLimits: EvaluationRoundLimitInput[],\n): EvaluationRound => {\n const limits: EvaluationRoundLimit[] = []\n if (totalSubmissionLimit) {\n const totalSubmissionLimitInt = Number(totalSubmissionLimit)\n if (Number.isNaN(totalSubmissionLimitInt)) {\n throw TypeError('Total Submission is not an integer')\n }\n limits.push({\n limitType: 'TOTAL',\n maximumSubmissions: totalSubmissionLimitInt,\n })\n }\n advancedLimits.forEach(limitInput => {\n if (limitInput.maxSubmissionString) {\n const maxSubmissionInt = Number(limitInput.maxSubmissionString)\n if (Number.isNaN(maxSubmissionInt)) {\n throw TypeError(limitInput.type + ' Limit is not an integer')\n }\n limits.push({\n limitType: limitInput.type,\n maximumSubmissions: maxSubmissionInt,\n })\n }\n })\n\n return {\n id: evaluationRoundInputProp.id,\n etag: evaluationRoundInputProp.etag,\n evaluationId: evaluationRoundInputProp.evaluationId,\n roundStart: dayjs.utc(startDate).toJSON(),\n roundEnd: dayjs.utc(endDate).toJSON(),\n limits: limits,\n }\n}\n\nfunction getDateErrorMessage(\n dateField: 'start' | 'end',\n error: DateTimeValidationError | null,\n): string | null {\n if (error == null) return null\n switch (error) {\n case 'disablePast':\n return `${upperFirst(dateField)} date cannot be in the past`\n case 'invalidDate':\n default:\n return 'Invalid date'\n }\n}\n\nexport function EvaluationRoundEditor({\n evaluationRoundInput,\n onSave,\n onDelete,\n}: EvaluationRoundEditorProps) {\n const { accessToken } = useSynapseContext()\n const [error, setError] = useState<string | SynapseClientError | undefined>()\n const [showSaveSuccess, setShowSaveSuccess] = useState<boolean>(false)\n\n useEffect(() => {\n if (error) {\n setShowSaveSuccess(false)\n }\n }, [error])\n\n const [startDate, setStartDate] = useState<Dayjs | null>(\n evaluationRoundInput.roundStart\n ? dayjs(evaluationRoundInput.roundStart)\n : null,\n )\n const [endDate, setEndDate] = useState<Dayjs | null>(\n evaluationRoundInput.roundEnd ? dayjs(evaluationRoundInput.roundEnd) : null,\n )\n\n const [totalSubmissionLimit, setTotalSubmissionLimit] = useState<string>(\n evaluationRoundInput.totalSubmissionLimit,\n )\n\n const [advancedMode, setAdvancedMode] = useState<boolean>(false)\n\n const [startDateError, setStartDateError] =\n useState<DateTimeValidationError | null>(null)\n const [endDateError, setEndDateError] =\n useState<DateTimeValidationError | null>(null)\n\n const {\n list: advancedLimits,\n handleListRemove,\n handleListChange: handleAdvancedLimitsChange,\n appendToList: addAdvancedLimit,\n } = useListState<EvaluationRoundLimitInput>(evaluationRoundInput.otherLimits)\n\n // if we remove the last advanced limit, hide the advanced limits\n const handleAdvancedLimitsRemove = (index: number) => {\n const generatedRemoveFunc = handleListRemove(index)\n return () => {\n //we are deleting the last advanced limit\n\n generatedRemoveFunc()\n if (advancedLimits.length === 1) {\n // NOTE: we dont check for length == 0 because we don't modify the original list,\n // instead the generated function will setState() with a NEW empty list\n // so the original list we reference still has 1 element\n setAdvancedMode(false)\n }\n }\n }\n\n const onSaveButtonClick = () => {\n setShowSaveSuccess(false)\n let evaluationRound\n try {\n evaluationRound = convertInputsToEvaluationRound(\n evaluationRoundInput,\n startDate,\n endDate,\n totalSubmissionLimit,\n advancedLimits,\n )\n } catch (err) {\n // error thrown if number\n setError(err)\n }\n if (evaluationRound) {\n const promise = evaluationRound.id\n ? updateEvaluationRound(evaluationRound, accessToken)\n : createEvaluationRound(evaluationRound, accessToken)\n\n promise\n .then(createdOrUpdatedRound => {\n const newInput = convertEvaluationRoundToInput(\n createdOrUpdatedRound,\n evaluationRoundInput.reactListKey,\n )\n //clear out previous error if any\n setError(undefined)\n setShowSaveSuccess(true)\n onSave(newInput)\n })\n .catch(error => setError(error))\n }\n }\n\n const onDeleteButtonClick = () => {\n if (evaluationRoundInput.id) {\n deleteEvaluationRound(\n evaluationRoundInput.evaluationId,\n evaluationRoundInput.id,\n accessToken,\n )\n .then(() => onDelete())\n .catch(error => setError(error))\n } else {\n onDelete()\n }\n }\n\n const disableStartInput = dayjs().isSameOrAfter(\n evaluationRoundInput.roundStart,\n )\n\n return (\n <div className=\"evaluation-round-editor\">\n <Card>\n <CardContent sx={{ p: 3 }}>\n <form aria-label={'Evaluation Round Form'}>\n <Box sx={{ display: 'flex', justifyContent: 'space-between' }}>\n <h5>\n ROUND STATUS\n {evaluationRoundInput.id &&\n ' (' + evaluationRoundInput.id + ')'}\n </h5>\n <EvaluationRoundEditorDropdown\n onDelete={onDeleteButtonClick}\n onSave={onSaveButtonClick}\n />\n </Box>\n <Box className=\"round-status\" sx={{ mb: 2 }}>\n {determineRoundStatus(\n evaluationRoundInput.roundStart,\n evaluationRoundInput.roundEnd,\n )}\n </Box>\n <h5>DURATION</h5>\n\n <Grid2 container>\n <Grid2 size={6}>\n <DateTimePicker\n label=\"Round Start\"\n value={startDate}\n onChange={setStartDate}\n onError={error => setStartDateError(error)}\n disabled={disableStartInput}\n // Don't allow the value to be a past date only if the input is not disabled.\n // i.e. allow a past date if the round has already started\n disablePast={!disableStartInput}\n slotProps={{\n textField: {\n helperText: getDateErrorMessage('start', startDateError),\n },\n }}\n />\n </Grid2>\n <Grid2 size={6}>\n <DateTimePicker\n label=\"Round End\"\n value={endDate}\n onChange={setEndDate}\n onError={error => setEndDateError(error)}\n disablePast={\n !dayjs(endDate).isSame(evaluationRoundInput.roundEnd)\n }\n slotProps={{\n textField: {\n helperText: getDateErrorMessage('end', endDateError),\n },\n }}\n />\n </Grid2>\n </Grid2>\n <h5 style={{ marginTop: '20px' }}>SUBMISSION LIMITS</h5>\n <TextField\n fullWidth\n label=\"Total Submissions / Round\"\n value={totalSubmissionLimit}\n onChange={event => setTotalSubmissionLimit(event.target.value)}\n // Chrome for some reason decides to autofill this input box with email address, so we must disable autofill\n // this is a hacky, but consistent way to disable autofill because Chrome does not respect the spec :(\n // https://bugs.chromium.org/p/chromium/issues/detail?id=914451\n autoComplete=\"new-password\"\n slotProps={{\n htmlInput: {\n pattern: '[0-9]*',\n },\n }}\n />\n <Box sx={{ my: 2 }}>\n <Button\n variant=\"outlined\"\n color=\"primary\"\n size={'small'}\n onClick={() => setAdvancedMode(!advancedMode)}\n >\n Advanced Limits\n </Button>\n </Box>\n {advancedMode && (\n <EvaluationRoundLimitOptionsList\n limitInputs={advancedLimits}\n handleChange={handleAdvancedLimitsChange}\n handleDeleteLimit={handleAdvancedLimitsRemove}\n onAddNewLimit={addAdvancedLimit}\n />\n )}\n\n {error && (\n <Box sx={{ my: 3 }}>\n <ErrorBanner error={error} />\n </Box>\n )}\n\n {showSaveSuccess && (\n <Box sx={{ my: 3 }}>\n <Alert\n className=\"save-success-alert\"\n severity=\"success\"\n onClose={() => setShowSaveSuccess(false)}\n sx={{ mb: '20px' }}\n >\n Successfully saved.\n </Alert>\n </Box>\n )}\n\n <Box sx={{ mt: 3, textAlign: 'right' }}>\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={onSaveButtonClick}\n >\n Save\n </Button>\n </Box>\n </form>\n </CardContent>\n </Card>\n </div>\n )\n}\n\nexport const HelpersToTest = {\n disallowCalendarDateBefore,\n determineRoundStatus,\n convertInputsToEvaluationRound,\n}\n"],"names":["dayjs","utc","isSameOrAfter","disallowCalendarDateBefore","date","startOfDay","currentDate","determineRoundStatus","roundStart","roundEnd","className","iconProps","status","now","jsxs","jsx","IconSvg","convertInputsToEvaluationRound","evaluationRoundInputProp","startDate","endDate","totalSubmissionLimit","advancedLimits","limits","totalSubmissionLimitInt","limitInput","maxSubmissionInt","getDateErrorMessage","dateField","error","upperFirst","EvaluationRoundEditor","evaluationRoundInput","onSave","onDelete","accessToken","useSynapseContext","setError","useState","showSaveSuccess","setShowSaveSuccess","useEffect","setStartDate","setEndDate","setTotalSubmissionLimit","advancedMode","setAdvancedMode","startDateError","setStartDateError","endDateError","setEndDateError","handleListRemove","handleAdvancedLimitsChange","addAdvancedLimit","useListState","handleAdvancedLimitsRemove","index","generatedRemoveFunc","onSaveButtonClick","evaluationRound","err","updateEvaluationRound","createEvaluationRound","createdOrUpdatedRound","newInput","convertEvaluationRoundToInput","onDeleteButtonClick","deleteEvaluationRound","disableStartInput","Card","CardContent","Box","EvaluationRoundEditorDropdown","Grid2","DateTimePicker","TextField","event","Button","EvaluationRoundLimitOptionsList","ErrorBanner","Alert","HelpersToTest"],"mappings":"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"}
1
+ {"version":3,"file":"EvaluationRoundEditor.js","sources":["../../../src/components/Evaluation/EvaluationRoundEditor.tsx"],"sourcesContent":["import {\n createEvaluationRound,\n deleteEvaluationRound,\n updateEvaluationRound,\n} from '@/synapse-client/SynapseClient'\nimport { useGlobalIsEditingContext } from '@/utils/context/GlobalIsEditingContext'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { useListState } from '@/utils/hooks/useListState'\nimport {\n Alert,\n Box,\n Button,\n Card,\n CardContent,\n Grid as Grid2,\n TextField,\n} from '@mui/material'\nimport { DateTimeValidationError } from '@mui/x-date-pickers'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n EvaluationRound,\n EvaluationRoundLimit,\n} from '@sage-bionetworks/synapse-types'\nimport dayjs, { Dayjs } from 'dayjs'\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter'\nimport utc from 'dayjs/plugin/utc'\nimport { upperFirst } from 'lodash-es'\nimport { useEffect, useState } from 'react'\nimport DateTimePicker from '../DateTimePicker/DateTimePicker'\nimport { ErrorBanner } from '../error/ErrorBanner'\nimport IconSvg, { IconSvgProps } from '../IconSvg/IconSvg'\nimport { EvaluationRoundEditorDropdown } from './EvaluationRoundEditorDropdown'\nimport {\n convertEvaluationRoundToInput,\n EvaluationRoundInput,\n EvaluationRoundLimitInput,\n} from './input_models/models'\nimport { EvaluationRoundLimitOptionsList } from './round_limits/EvaluationRoundLimitOptionsList'\n\ndayjs.extend(utc)\ndayjs.extend(isSameOrAfter)\n\nexport type EvaluationRoundEditorProps = {\n evaluationRoundInput: EvaluationRoundInput\n onDelete: () => void\n onSave: (evaluationRound: EvaluationRoundInput) => void\n}\n\nconst disallowCalendarDateBefore = (date: Dayjs) => {\n const startOfDay = date.startOf('day')\n return (currentDate: Dayjs) => currentDate.isSameOrAfter(startOfDay)\n}\n\nconst determineRoundStatus = (\n roundStart: Dayjs | string,\n roundEnd: Dayjs | string,\n) => {\n let className: string\n let iconProps: IconSvgProps | undefined\n let status: string\n const now = dayjs()\n // based off of start/end datetime from props so that users making\n // unsaved changes to the start/end dates do not change the status\n if (now.isSameOrAfter(roundStart)) {\n if (now.isBefore(roundEnd)) {\n className = 'status-in-progress'\n iconProps = { icon: 'sync' }\n status = 'IN PROGRESS'\n } else {\n className = 'status-completed'\n iconProps = { icon: 'clipboardCheck' }\n status = 'COMPLETED'\n }\n } else {\n className = 'status-not-yet-started'\n iconProps = undefined\n status = 'NOT YET STARTED'\n }\n\n return (\n <div className={className}>\n <div className=\"status\">\n {iconProps && <IconSvg {...iconProps} />}\n <span>{status}</span>\n </div>\n </div>\n )\n}\n\nconst convertInputsToEvaluationRound = (\n evaluationRoundInputProp: EvaluationRoundInput,\n startDate: string | Dayjs | null,\n endDate: string | Dayjs | null,\n totalSubmissionLimit: string,\n advancedLimits: EvaluationRoundLimitInput[],\n): EvaluationRound => {\n const limits: EvaluationRoundLimit[] = []\n if (totalSubmissionLimit) {\n const totalSubmissionLimitInt = Number(totalSubmissionLimit)\n if (Number.isNaN(totalSubmissionLimitInt)) {\n throw TypeError('Total Submission is not an integer')\n }\n limits.push({\n limitType: 'TOTAL',\n maximumSubmissions: totalSubmissionLimitInt,\n })\n }\n advancedLimits.forEach(limitInput => {\n if (limitInput.maxSubmissionString) {\n const maxSubmissionInt = Number(limitInput.maxSubmissionString)\n if (Number.isNaN(maxSubmissionInt)) {\n throw TypeError(limitInput.type + ' Limit is not an integer')\n }\n limits.push({\n limitType: limitInput.type,\n maximumSubmissions: maxSubmissionInt,\n })\n }\n })\n\n return {\n id: evaluationRoundInputProp.id,\n etag: evaluationRoundInputProp.etag,\n evaluationId: evaluationRoundInputProp.evaluationId,\n roundStart: dayjs.utc(startDate).toJSON(),\n roundEnd: dayjs.utc(endDate).toJSON(),\n limits: limits,\n }\n}\n\nfunction getDateErrorMessage(\n dateField: 'start' | 'end',\n error: DateTimeValidationError | null,\n): string | null {\n if (error == null) return null\n switch (error) {\n case 'disablePast':\n return `${upperFirst(dateField)} date cannot be in the past`\n case 'invalidDate':\n default:\n return 'Invalid date'\n }\n}\n\nexport function EvaluationRoundEditor({\n evaluationRoundInput,\n onSave,\n onDelete,\n}: EvaluationRoundEditorProps) {\n const { accessToken } = useSynapseContext()\n const { setIsEditing } = useGlobalIsEditingContext()\n const [isDirty, setIsDirty] = useState(false)\n const [error, setError] = useState<string | SynapseClientError | undefined>()\n const [showSaveSuccess, setShowSaveSuccess] = useState<boolean>(false)\n\n useEffect(() => {\n setIsEditing(isDirty)\n return () => {\n setIsEditing(false)\n }\n }, [isDirty, setIsEditing])\n\n useEffect(() => {\n if (error) {\n setShowSaveSuccess(false)\n }\n }, [error])\n\n const [startDate, setStartDate] = useState<Dayjs | null>(\n evaluationRoundInput.roundStart\n ? dayjs(evaluationRoundInput.roundStart)\n : null,\n )\n const [endDate, setEndDate] = useState<Dayjs | null>(\n evaluationRoundInput.roundEnd ? dayjs(evaluationRoundInput.roundEnd) : null,\n )\n\n const [totalSubmissionLimit, setTotalSubmissionLimit] = useState<string>(\n evaluationRoundInput.totalSubmissionLimit,\n )\n\n const [advancedMode, setAdvancedMode] = useState<boolean>(false)\n\n const [startDateError, setStartDateError] =\n useState<DateTimeValidationError | null>(null)\n const [endDateError, setEndDateError] =\n useState<DateTimeValidationError | null>(null)\n\n const {\n list: advancedLimits,\n handleListRemove,\n handleListChange: handleAdvancedLimitsChangeBase,\n appendToList: appendAdvancedLimit,\n } = useListState<EvaluationRoundLimitInput>(evaluationRoundInput.otherLimits)\n\n const handleAdvancedLimitsChange = (\n ...args: Parameters<typeof handleAdvancedLimitsChangeBase>\n ) => {\n setIsDirty(true)\n return handleAdvancedLimitsChangeBase(...args)\n }\n\n const addAdvancedLimit = (\n ...args: Parameters<typeof appendAdvancedLimit>\n ) => {\n setIsDirty(true)\n return appendAdvancedLimit(...args)\n }\n\n // if we remove the last advanced limit, hide the advanced limits\n const handleAdvancedLimitsRemove = (index: number) => {\n const generatedRemoveFunc = handleListRemove(index)\n return () => {\n //we are deleting the last advanced limit\n setIsDirty(true)\n generatedRemoveFunc()\n if (advancedLimits.length === 1) {\n // NOTE: we dont check for length == 0 because we don't modify the original list,\n // instead the generated function will setState() with a NEW empty list\n // so the original list we reference still has 1 element\n setAdvancedMode(false)\n }\n }\n }\n\n const onSaveButtonClick = () => {\n setShowSaveSuccess(false)\n let evaluationRound\n try {\n evaluationRound = convertInputsToEvaluationRound(\n evaluationRoundInput,\n startDate,\n endDate,\n totalSubmissionLimit,\n advancedLimits,\n )\n } catch (err) {\n // error thrown if number\n setError(err)\n }\n if (evaluationRound) {\n const promise = evaluationRound.id\n ? updateEvaluationRound(evaluationRound, accessToken)\n : createEvaluationRound(evaluationRound, accessToken)\n\n promise\n .then(createdOrUpdatedRound => {\n const newInput = convertEvaluationRoundToInput(\n createdOrUpdatedRound,\n evaluationRoundInput.reactListKey,\n )\n //clear out previous error if any\n setError(undefined)\n setShowSaveSuccess(true)\n setIsDirty(false)\n onSave(newInput)\n })\n .catch(error => setError(error))\n }\n }\n\n const onDeleteButtonClick = () => {\n if (evaluationRoundInput.id) {\n deleteEvaluationRound(\n evaluationRoundInput.evaluationId,\n evaluationRoundInput.id,\n accessToken,\n )\n .then(() => onDelete())\n .catch(error => setError(error))\n } else {\n onDelete()\n }\n }\n\n const disableStartInput = dayjs().isSameOrAfter(\n evaluationRoundInput.roundStart,\n )\n\n return (\n <div className=\"evaluation-round-editor\">\n <Card>\n <CardContent sx={{ p: 3 }}>\n <form aria-label={'Evaluation Round Form'}>\n <Box sx={{ display: 'flex', justifyContent: 'space-between' }}>\n <h5>\n ROUND STATUS\n {evaluationRoundInput.id &&\n ' (' + evaluationRoundInput.id + ')'}\n </h5>\n <EvaluationRoundEditorDropdown\n onDelete={onDeleteButtonClick}\n onSave={onSaveButtonClick}\n />\n </Box>\n <Box className=\"round-status\" sx={{ mb: 2 }}>\n {determineRoundStatus(\n evaluationRoundInput.roundStart,\n evaluationRoundInput.roundEnd,\n )}\n </Box>\n <h5>DURATION</h5>\n\n <Grid2 container>\n <Grid2 size={6}>\n <DateTimePicker\n label=\"Round Start\"\n value={startDate}\n onChange={date => {\n setStartDate(date)\n setIsDirty(true)\n }}\n onError={error => setStartDateError(error)}\n disabled={disableStartInput}\n // Don't allow the value to be a past date only if the input is not disabled.\n // i.e. allow a past date if the round has already started\n disablePast={!disableStartInput}\n slotProps={{\n textField: {\n helperText: getDateErrorMessage('start', startDateError),\n },\n }}\n />\n </Grid2>\n <Grid2 size={6}>\n <DateTimePicker\n label=\"Round End\"\n value={endDate}\n onChange={date => {\n setEndDate(date)\n setIsDirty(true)\n }}\n onError={error => setEndDateError(error)}\n disablePast={\n !dayjs(endDate).isSame(evaluationRoundInput.roundEnd)\n }\n slotProps={{\n textField: {\n helperText: getDateErrorMessage('end', endDateError),\n },\n }}\n />\n </Grid2>\n </Grid2>\n <h5 style={{ marginTop: '20px' }}>SUBMISSION LIMITS</h5>\n <TextField\n fullWidth\n label=\"Total Submissions / Round\"\n value={totalSubmissionLimit}\n onChange={event => {\n setTotalSubmissionLimit(event.target.value)\n setIsDirty(true)\n }}\n // Chrome for some reason decides to autofill this input box with email address, so we must disable autofill\n // this is a hacky, but consistent way to disable autofill because Chrome does not respect the spec :(\n // https://bugs.chromium.org/p/chromium/issues/detail?id=914451\n autoComplete=\"new-password\"\n slotProps={{\n htmlInput: {\n pattern: '[0-9]*',\n },\n }}\n />\n <Box sx={{ my: 2 }}>\n <Button\n variant=\"outlined\"\n color=\"primary\"\n size={'small'}\n onClick={() => setAdvancedMode(!advancedMode)}\n >\n Advanced Limits\n </Button>\n </Box>\n {advancedMode && (\n <EvaluationRoundLimitOptionsList\n limitInputs={advancedLimits}\n handleChange={handleAdvancedLimitsChange}\n handleDeleteLimit={handleAdvancedLimitsRemove}\n onAddNewLimit={addAdvancedLimit}\n />\n )}\n\n {error && (\n <Box sx={{ my: 3 }}>\n <ErrorBanner error={error} />\n </Box>\n )}\n\n {showSaveSuccess && (\n <Box sx={{ my: 3 }}>\n <Alert\n className=\"save-success-alert\"\n severity=\"success\"\n onClose={() => setShowSaveSuccess(false)}\n sx={{ mb: '20px' }}\n >\n Successfully saved.\n </Alert>\n </Box>\n )}\n\n <Box sx={{ mt: 3, textAlign: 'right' }}>\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={onSaveButtonClick}\n >\n Save\n </Button>\n </Box>\n </form>\n </CardContent>\n </Card>\n </div>\n )\n}\n\nexport const HelpersToTest = {\n disallowCalendarDateBefore,\n determineRoundStatus,\n convertInputsToEvaluationRound,\n}\n"],"names":["dayjs","utc","isSameOrAfter","disallowCalendarDateBefore","date","startOfDay","currentDate","determineRoundStatus","roundStart","roundEnd","className","iconProps","status","now","jsxs","jsx","IconSvg","convertInputsToEvaluationRound","evaluationRoundInputProp","startDate","endDate","totalSubmissionLimit","advancedLimits","limits","totalSubmissionLimitInt","limitInput","maxSubmissionInt","getDateErrorMessage","dateField","error","upperFirst","EvaluationRoundEditor","evaluationRoundInput","onSave","onDelete","accessToken","useSynapseContext","setIsEditing","useGlobalIsEditingContext","isDirty","setIsDirty","useState","setError","showSaveSuccess","setShowSaveSuccess","useEffect","setStartDate","setEndDate","setTotalSubmissionLimit","advancedMode","setAdvancedMode","startDateError","setStartDateError","endDateError","setEndDateError","handleListRemove","handleAdvancedLimitsChangeBase","appendAdvancedLimit","useListState","handleAdvancedLimitsChange","args","addAdvancedLimit","handleAdvancedLimitsRemove","index","generatedRemoveFunc","onSaveButtonClick","evaluationRound","err","updateEvaluationRound","createEvaluationRound","createdOrUpdatedRound","newInput","convertEvaluationRoundToInput","onDeleteButtonClick","deleteEvaluationRound","disableStartInput","Card","CardContent","Box","EvaluationRoundEditorDropdown","Grid2","DateTimePicker","TextField","event","Button","EvaluationRoundLimitOptionsList","ErrorBanner","Alert","HelpersToTest"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as o } from "react/jsx-runtime";
2
- import { useGetEntityBundle as m } from "../../synapse-queries/entity/useEntityBundle.js";
2
+ import m from "../../synapse-queries/entity/useEntityBundle.js";
3
3
  import { useResolveLinkEntity as l } from "../../utils/functions/ResolveLinkEntity.js";
4
4
  import { isFileEntity as L } from "../../utils/types/IsType.js";
5
5
  import { ALL_ENTITY_BUNDLE_FIELDS as u } from "@sage-bionetworks/synapse-types";
@@ -3,7 +3,7 @@ import "../../synapse-client/SynapseClient.js";
3
3
  import "@sage-bionetworks/synapse-client/generated/models/ErrorResponseCode";
4
4
  import "@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse";
5
5
  import "@sage-bionetworks/synapse-client/util/SynapseClientError";
6
- import { ObjectType as k } from "@sage-bionetworks/synapse-types";
6
+ import { ObjectType as D } from "@sage-bionetworks/synapse-types";
7
7
  import "../../utils/functions/EntityTypeUtils.js";
8
8
  import { copyStringToClipboard as I } from "../../utils/functions/StringUtils.js";
9
9
  import "../../utils/SynapseConstants.js";
@@ -29,13 +29,13 @@ import "lodash-es/xorWith";
29
29
  import "react-router";
30
30
  import "@sage-bionetworks/synapse-client";
31
31
  import "../../utils/types/IsType.js";
32
- import { useGetEntityBundle as E } from "../../synapse-queries/entity/useEntityBundle.js";
32
+ import E from "../../synapse-queries/entity/useEntityBundle.js";
33
33
  import { useGetCurrentUserProfile as S } from "../../synapse-queries/user/useUserBundle.js";
34
34
  import { useGetReply as B, useDeleteReply as U } from "../../synapse-queries/forum/useReply.js";
35
35
  import { formatDate as j } from "../../utils/functions/DateFormatter.js";
36
36
  import v from "dayjs";
37
37
  import m from "../IconSvg/IconSvg.js";
38
- import { MarkdownSynapse as A } from "../Markdown/MarkdownSynapse.js";
38
+ import { Markdown as A } from "../Markdown/MarkdownSynapse.js";
39
39
  import { SkeletonTable as Y } from "../Skeleton/SkeletonTable.js";
40
40
  import { WarningDialog as P } from "../SynapseForm/WarningDialog.js";
41
41
  import { displayToast as u } from "../ToastMessage/ToastMessage.js";
@@ -49,15 +49,15 @@ const _ = (i) => {
49
49
  );
50
50
  };
51
51
  function Ue(i) {
52
- const { reply: e, isReplyAuthorModerator: n = !1 } = i, [y, d] = c(!1), [h, l] = c(!1), { data: b } = S(), { data: C } = E(e.projectId), { data: s, isLoading: g } = B(e), r = M(null), { mutate: w } = U({
52
+ const { reply: e, isReplyAuthorModerator: n = !1 } = i, [y, d] = c(!1), [h, l] = c(!1), { data: b } = S(), { data: w } = E(e.projectId), { data: s, isLoading: C } = B(e), r = M(null), { mutate: g } = U({
53
53
  onSuccess: () => {
54
54
  l(!1), u("A reply has been deleted.", "info");
55
55
  }
56
56
  }), R = e.createdBy == b?.ownerId;
57
57
  return x(() => {
58
- const D = new URLSearchParams(window.location.search).get(f);
58
+ const k = new URLSearchParams(window.location.search).get(f);
59
59
  let a;
60
- return D === e.id && r.current && (r.current.style.transition = "background-color 1s ease", r.current.style.backgroundColor = "#fbf4e0", r.current.style.borderColor = "#f4dda3", a = setTimeout(() => {
60
+ return k === e.id && r.current && (r.current.style.transition = "background-color 1s ease", r.current.style.backgroundColor = "#fbf4e0", r.current.style.borderColor = "#f4dda3", a = setTimeout(() => {
61
61
  r.current && (r.current.style.backgroundColor = "#f9f9f9", r.current.style.borderColor = "#ccc");
62
62
  }, 2e3)), () => {
63
63
  a && clearTimeout(a);
@@ -69,7 +69,7 @@ function Ue(i) {
69
69
  id: `reply._${e.id}`,
70
70
  ref: r,
71
71
  role: "article",
72
- children: g ? /* @__PURE__ */ o(Y, { numCols: 1, numRows: 4 }) : /* @__PURE__ */ o(p, { children: s && /* @__PURE__ */ t(p, { children: [
72
+ children: C ? /* @__PURE__ */ o(Y, { numCols: 1, numRows: 4 }) : /* @__PURE__ */ o(p, { children: s && /* @__PURE__ */ t(p, { children: [
73
73
  /* @__PURE__ */ t("div", { children: [
74
74
  /* @__PURE__ */ o(
75
75
  $,
@@ -86,7 +86,7 @@ function Ue(i) {
86
86
  A,
87
87
  {
88
88
  markdown: s,
89
- objectType: k.REPLY
89
+ objectType: D.REPLY
90
90
  }
91
91
  ),
92
92
  /* @__PURE__ */ t("span", { children: [
@@ -106,7 +106,7 @@ function Ue(i) {
106
106
  children: [
107
107
  /* @__PURE__ */ o("button", { onClick: () => _(e.id), children: /* @__PURE__ */ o(m, { icon: "link", label: "Copy link to this reply" }) }),
108
108
  R && /* @__PURE__ */ o("button", { onClick: () => d(!0), children: /* @__PURE__ */ o(m, { icon: "edit", label: "Edit reply" }) }),
109
- C?.permissions.canModerate && /* @__PURE__ */ o("button", { onClick: () => l(!0), children: /* @__PURE__ */ o(m, { icon: "delete", label: "Delete reply" }) })
109
+ w?.permissions.canModerate && /* @__PURE__ */ o("button", { onClick: () => l(!0), children: /* @__PURE__ */ o(m, { icon: "delete", label: "Delete reply" }) })
110
110
  ]
111
111
  }
112
112
  )
@@ -132,7 +132,7 @@ function Ue(i) {
132
132
  onCancel: () => {
133
133
  l(!1);
134
134
  },
135
- onConfirm: () => w({
135
+ onConfirm: () => g({
136
136
  forumId: e.forumId,
137
137
  threadId: e.threadId,
138
138
  replyId: e.id