synapse-react-client 4.0.2 → 4.0.4

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 (525) hide show
  1. package/dist/SWC.index.js +1 -1
  2. package/dist/assets/icons/AwardScroll.d.ts +5 -0
  3. package/dist/assets/icons/AwardScroll.d.ts.map +1 -0
  4. package/dist/assets/icons/AwardScroll.js +78 -0
  5. package/dist/assets/icons/AwardScroll.js.map +1 -0
  6. package/dist/assets/icons/Baseline.d.ts +5 -0
  7. package/dist/assets/icons/Baseline.d.ts.map +1 -0
  8. package/dist/assets/icons/Baseline.js +43 -0
  9. package/dist/assets/icons/Baseline.js.map +1 -0
  10. package/dist/assets/icons/Challenge.svg +13 -0
  11. package/dist/assets/icons/Challenge.svg.js +7 -0
  12. package/dist/assets/icons/Challenge.svg.js.map +1 -0
  13. package/dist/assets/icons/ClappingHands.d.ts +5 -0
  14. package/dist/assets/icons/ClappingHands.d.ts.map +1 -0
  15. package/dist/assets/icons/ClappingHands.js +106 -0
  16. package/dist/assets/icons/ClappingHands.js.map +1 -0
  17. package/dist/assets/icons/HandWithMoney.d.ts +5 -0
  18. package/dist/assets/icons/HandWithMoney.d.ts.map +1 -0
  19. package/dist/assets/icons/HandWithMoney.js +15 -0
  20. package/dist/assets/icons/HandWithMoney.js.map +1 -0
  21. package/dist/assets/icons/MultiFile.d.ts +5 -0
  22. package/dist/assets/icons/MultiFile.d.ts.map +1 -0
  23. package/dist/assets/icons/MultiFile.js +8 -0
  24. package/dist/assets/icons/MultiFile.js.map +1 -0
  25. package/dist/assets/icons/MultiFile.svg +4 -0
  26. package/dist/assets/icons/MultiFile.svg.js +7 -0
  27. package/dist/assets/icons/MultiFile.svg.js.map +1 -0
  28. package/dist/assets/icons/OpenBook.d.ts +5 -0
  29. package/dist/assets/icons/OpenBook.d.ts.map +1 -0
  30. package/dist/assets/icons/OpenBook.js +99 -0
  31. package/dist/assets/icons/OpenBook.js.map +1 -0
  32. package/dist/assets/icons/Podium.d.ts +5 -0
  33. package/dist/assets/icons/Podium.d.ts.map +1 -0
  34. package/dist/assets/icons/Podium.js +36 -0
  35. package/dist/assets/icons/Podium.js.map +1 -0
  36. package/dist/assets/icons/RosetteRibbon.d.ts +5 -0
  37. package/dist/assets/icons/RosetteRibbon.d.ts.map +1 -0
  38. package/dist/assets/icons/RosetteRibbon.js +36 -0
  39. package/dist/assets/icons/RosetteRibbon.js.map +1 -0
  40. package/dist/assets/icons/StarTrophy.d.ts +5 -0
  41. package/dist/assets/icons/StarTrophy.d.ts.map +1 -0
  42. package/dist/assets/icons/StarTrophy.js +99 -0
  43. package/dist/assets/icons/StarTrophy.js.map +1 -0
  44. package/dist/assets/icons/ThreeStars.d.ts +5 -0
  45. package/dist/assets/icons/ThreeStars.d.ts.map +1 -0
  46. package/dist/assets/icons/ThreeStars.js +71 -0
  47. package/dist/assets/icons/ThreeStars.js.map +1 -0
  48. package/dist/assets/icons/UnpackagableFile.d.ts +5 -0
  49. package/dist/assets/icons/UnpackagableFile.d.ts.map +1 -0
  50. package/dist/assets/icons/UnpackagableFile.js +8 -0
  51. package/dist/assets/icons/UnpackagableFile.js.map +1 -0
  52. package/dist/assets/icons/UnpackagableFile.svg +4 -0
  53. package/dist/assets/icons/UnpackagableFile.svg.js +7 -0
  54. package/dist/assets/icons/UnpackagableFile.svg.js.map +1 -0
  55. package/dist/assets/mui_components/PackagableFile.d.ts.map +1 -1
  56. package/dist/assets/mui_components/PackagableFile.js +5 -4
  57. package/dist/assets/mui_components/PackagableFile.js.map +1 -1
  58. package/dist/assets/mui_components/PackagableFile.svg +3 -0
  59. package/dist/assets/mui_components/PackagableFile.svg.js +7 -0
  60. package/dist/assets/mui_components/PackagableFile.svg.js.map +1 -0
  61. package/dist/assets/themed_icons/index.d.ts +1 -2
  62. package/dist/assets/themed_icons/index.d.ts.map +1 -1
  63. package/dist/assets/themed_icons/index.js +8 -10
  64. package/dist/assets/themed_icons/index.js.map +1 -1
  65. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js +1 -1
  66. package/dist/components/AccessRequirementList/AccessRequirementList.js +4 -4
  67. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.d.ts.map +1 -1
  68. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js +8 -7
  69. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js.map +1 -1
  70. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.js +4 -4
  71. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItem.js +11 -11
  72. package/dist/components/AccessRequirementList/RequirementItem/RequirementItem.js +1 -1
  73. package/dist/components/AccessRequirementList/RequirementItem/SelfSignAccessRequirementItem.js +9 -9
  74. package/dist/components/AccessRequirementList/RequirementItem/UnmanagedACTAccessRequirementItem.js +5 -5
  75. package/dist/components/AcknowledgementsPage/AcknowledgementsPage.d.ts.map +1 -1
  76. package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js +36 -35
  77. package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js.map +1 -1
  78. package/dist/components/AclEditor/AclEditor.js +8 -8
  79. package/dist/components/AclEditor/AclEditor.js.map +1 -1
  80. package/dist/components/AclEditor/AclEditor.test-utils.js +34 -34
  81. package/dist/components/AclEditor/AclEditor.test-utils.js.map +1 -1
  82. package/dist/components/AddToDownloadListV2.js +10 -10
  83. package/dist/components/AddToDownloadListV2.js.map +1 -1
  84. package/dist/components/Authentication/AuthenticationMethodSelection.js +1 -1
  85. package/dist/components/Authentication/TwoFactorEnrollmentForm.d.ts.map +1 -1
  86. package/dist/components/Authentication/TwoFactorEnrollmentForm.js +6 -5
  87. package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
  88. package/dist/components/BasePortalCard/BasePortalCard.css +1 -1
  89. package/dist/components/BasePortalCard/BasePortalCard.d.ts +1 -2
  90. package/dist/components/BasePortalCard/BasePortalCard.d.ts.map +1 -1
  91. package/dist/components/BasePortalCard/BasePortalCard.js +21 -28
  92. package/dist/components/BasePortalCard/BasePortalCard.js.map +1 -1
  93. package/dist/components/BasePortalCard/BasePortalCard.module.scss +13 -1
  94. package/dist/components/BasePortalCard/BasePortalCard.module.scss.js +11 -11
  95. package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.css +1 -1
  96. package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.d.ts.map +1 -1
  97. package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.js +25 -25
  98. package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.js.map +1 -1
  99. package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.module.scss +13 -5
  100. package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.module.scss.js +5 -5
  101. package/dist/components/CardContainer/CardLink.d.ts +12 -0
  102. package/dist/components/CardContainer/CardLink.d.ts.map +1 -1
  103. package/dist/components/CardContainerLogic/CardContainerLogic.d.ts +5 -1
  104. package/dist/components/CardContainerLogic/CardContainerLogic.d.ts.map +1 -1
  105. package/dist/components/CardContainerLogic/CardContainerLogic.js.map +1 -1
  106. package/dist/components/CardContainerLogic/index.d.ts +1 -1
  107. package/dist/components/CardContainerLogic/index.d.ts.map +1 -1
  108. package/dist/components/CardDeck/TableQueryCardDeck.js +12 -9
  109. package/dist/components/CardDeck/TableQueryCardDeck.js.map +1 -1
  110. package/dist/components/ChallengeDataDownload/ChallengeDataDownload.js +33 -33
  111. package/dist/components/ChallengeDataDownload/ChallengeDataDownload.js.map +1 -1
  112. package/dist/components/ChallengeSubmission/AvailableEvaluationQueueList.js +12 -12
  113. package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.d.ts.map +1 -1
  114. package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js +7 -7
  115. package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js.map +1 -1
  116. package/dist/components/ChangePassword/useChangePasswordFormState.js +5 -2
  117. package/dist/components/ChangePassword/useChangePasswordFormState.js.map +1 -1
  118. package/dist/components/CitationPopover/CitationPopoverContent.d.ts.map +1 -1
  119. package/dist/components/CitationPopover/CitationPopoverContent.js +13 -12
  120. package/dist/components/CitationPopover/CitationPopoverContent.js.map +1 -1
  121. package/dist/components/ComponentCollapse.d.ts +6 -10
  122. package/dist/components/ComponentCollapse.d.ts.map +1 -1
  123. package/dist/components/ComponentCollapse.js +31 -35
  124. package/dist/components/ComponentCollapse.js.map +1 -1
  125. package/dist/components/CookiesNotification/CookiesNotification.js +1 -1
  126. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js +12 -10
  127. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js.map +1 -1
  128. package/dist/components/DataGrid/MergeGridWithSourceTableButton.js +10 -5
  129. package/dist/components/DataGrid/MergeGridWithSourceTableButton.js.map +1 -1
  130. package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
  131. package/dist/components/DataGrid/SynapseGrid.js +43 -38
  132. package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
  133. package/dist/components/DataGrid/components/UploadCsvToGridDialog.js +10 -5
  134. package/dist/components/DataGrid/components/UploadCsvToGridDialog.js.map +1 -1
  135. package/dist/components/DataGrid/hooks/useExportDataGridToCsv.d.ts.map +1 -1
  136. package/dist/components/DataGrid/hooks/useExportDataGridToCsv.js +9 -7
  137. package/dist/components/DataGrid/hooks/useExportDataGridToCsv.js.map +1 -1
  138. package/dist/components/DirectDownload/DirectDownload.d.ts.map +1 -1
  139. package/dist/components/DirectDownload/DirectDownload.js +23 -23
  140. package/dist/components/DirectDownload/DirectDownload.js.map +1 -1
  141. package/dist/components/DownloadCart/ActionRequiredCard/ActionRequiredCard.js +1 -1
  142. package/dist/components/DownloadCart/AvailableForDownloadTable.d.ts +6 -2
  143. package/dist/components/DownloadCart/AvailableForDownloadTable.d.ts.map +1 -1
  144. package/dist/components/DownloadCart/AvailableForDownloadTable.js +10 -8
  145. package/dist/components/DownloadCart/AvailableForDownloadTable.js.map +1 -1
  146. package/dist/components/DownloadCart/CreatePackageV2.css +1 -0
  147. package/dist/components/DownloadCart/CreatePackageV2.d.ts.map +1 -1
  148. package/dist/components/DownloadCart/CreatePackageV2.js +50 -46
  149. package/dist/components/DownloadCart/CreatePackageV2.js.map +1 -1
  150. package/dist/components/DownloadCart/CreatePackageV2.module.scss +38 -0
  151. package/dist/components/DownloadCart/CreatePackageV2.module.scss.js +14 -0
  152. package/dist/components/DownloadCart/CreatePackageV2.module.scss.js.map +1 -0
  153. package/dist/components/DownloadCart/DownloadCartPage.css +1 -0
  154. package/dist/components/DownloadCart/DownloadCartPage.d.ts.map +1 -1
  155. package/dist/components/DownloadCart/DownloadCartPage.js +316 -186
  156. package/dist/components/DownloadCart/DownloadCartPage.js.map +1 -1
  157. package/dist/components/DownloadCart/DownloadCartPage.module.scss +217 -0
  158. package/dist/components/DownloadCart/DownloadCartPage.module.scss.js +48 -0
  159. package/dist/components/DownloadCart/DownloadCartPage.module.scss.js.map +1 -0
  160. package/dist/components/DownloadCart/DownloadDetails.js +1 -1
  161. package/dist/components/DownloadCart/DownloadDetails.js.map +1 -1
  162. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js +33 -33
  163. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js.map +1 -1
  164. package/dist/components/DownloadCart/DownloadListTable.d.ts +4 -1
  165. package/dist/components/DownloadCart/DownloadListTable.d.ts.map +1 -1
  166. package/dist/components/DownloadCart/DownloadListTable.js +156 -236
  167. package/dist/components/DownloadCart/DownloadListTable.js.map +1 -1
  168. package/dist/components/DownloadCart/RequestDownloadCard.js +1 -1
  169. package/dist/components/DownloadCart/ShowDownloadV2.js +5 -5
  170. package/dist/components/DownloadCart/ShowDownloadV2.js.map +1 -1
  171. package/dist/components/Ecosystem/EcosystemSkeleton.js +10 -5
  172. package/dist/components/Ecosystem/EcosystemSkeleton.js.map +1 -1
  173. package/dist/components/Ecosystem/TableQueryEcosystem.js +1 -1
  174. package/dist/components/EntityAclEditor/EntityAclEditorModal.js +1 -1
  175. package/dist/components/EntityAclEditor/OpenData.js +1 -1
  176. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.d.ts.map +1 -1
  177. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js +113 -127
  178. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js.map +1 -1
  179. package/dist/components/EntityCitation/EntityCitation.js +1 -1
  180. package/dist/components/EntityDownloadButton/EntityDownloadButton.js +20 -20
  181. package/dist/components/EntityDownloadButton/EntityDownloadButton.js.map +1 -1
  182. package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js +4 -4
  183. package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js.map +1 -1
  184. package/dist/components/EntityFinder/details/view/table/CreatedOnCell.js +1 -1
  185. package/dist/components/EntityFinder/details/view/table/EntityNameCell.js +1 -1
  186. package/dist/components/EntityFinder/details/view/table/FileEntityMD5Cell.js +1 -1
  187. package/dist/components/EntityFinder/details/view/table/FileEntitySizeCell.js +1 -1
  188. package/dist/components/EntityFinder/details/view/table/ModifiedByCell.js +1 -1
  189. package/dist/components/EntityFinder/details/view/table/ModifiedOnCell.js +1 -1
  190. package/dist/components/EntityFinder/details/view/table/ParentProjectCell.js +1 -1
  191. package/dist/components/EntityFinder/tree/EntityTree.js +1 -1
  192. package/dist/components/EntityHeaderTable/EntityHeaderTable.d.ts.map +1 -1
  193. package/dist/components/EntityHeaderTable/EntityHeaderTable.js +39 -39
  194. package/dist/components/EntityHeaderTable/EntityHeaderTable.js.map +1 -1
  195. package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.d.ts +8 -0
  196. package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.d.ts.map +1 -0
  197. package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.js +46 -0
  198. package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.js.map +1 -0
  199. package/dist/components/Evaluation/EvaluationCard.d.ts.map +1 -1
  200. package/dist/components/Evaluation/EvaluationCard.js +35 -41
  201. package/dist/components/Evaluation/EvaluationCard.js.map +1 -1
  202. package/dist/components/Evaluation/EvaluationEditor.d.ts.map +1 -1
  203. package/dist/components/Evaluation/EvaluationEditor.js +95 -90
  204. package/dist/components/Evaluation/EvaluationEditor.js.map +1 -1
  205. package/dist/components/Evaluation/EvaluationRoundEditor.d.ts.map +1 -1
  206. package/dist/components/Evaluation/EvaluationRoundEditor.js +133 -124
  207. package/dist/components/Evaluation/EvaluationRoundEditor.js.map +1 -1
  208. package/dist/components/FeaturedDataTabs/FacetPlotsCard.js +6 -2
  209. package/dist/components/FeaturedDataTabs/FacetPlotsCard.js.map +1 -1
  210. package/dist/components/FeaturedDataTabs/FeaturedDataTabs.js +11 -8
  211. package/dist/components/FeaturedDataTabs/FeaturedDataTabs.js.map +1 -1
  212. package/dist/components/FilePreview/EntityPreview.js +1 -1
  213. package/dist/components/Forum/DiscussionReply.js +10 -10
  214. package/dist/components/Forum/DiscussionThread.js +21 -21
  215. package/dist/components/FullWidthAlert/FullWidthAlert.d.ts +2 -2
  216. package/dist/components/FullWidthAlert/FullWidthAlert.js.map +1 -1
  217. package/dist/components/GenericCard/CardUtils.d.ts.map +1 -1
  218. package/dist/components/GenericCard/CardUtils.js +36 -36
  219. package/dist/components/GenericCard/CardUtils.js.map +1 -1
  220. package/dist/components/GenericCard/CollapsibleDescription.js +25 -25
  221. package/dist/components/GenericCard/GenericCard.d.ts +5 -5
  222. package/dist/components/GenericCard/GenericCard.d.ts.map +1 -1
  223. package/dist/components/GenericCard/GenericCard.js +117 -103
  224. package/dist/components/GenericCard/GenericCard.js.map +1 -1
  225. package/dist/components/GenericCard/LabelMaybeWithIcon.d.ts +10 -0
  226. package/dist/components/GenericCard/LabelMaybeWithIcon.d.ts.map +1 -0
  227. package/dist/components/GenericCard/LabelMaybeWithIcon.js +33 -0
  228. package/dist/components/GenericCard/LabelMaybeWithIcon.js.map +1 -0
  229. package/dist/components/GenericCard/SynapseCardLabel.d.ts +2 -1
  230. package/dist/components/GenericCard/SynapseCardLabel.d.ts.map +1 -1
  231. package/dist/components/GenericCard/SynapseCardLabel.js +95 -85
  232. package/dist/components/GenericCard/SynapseCardLabel.js.map +1 -1
  233. package/dist/components/GenericCard/TableRowGenericCard.d.ts +10 -1
  234. package/dist/components/GenericCard/TableRowGenericCard.d.ts.map +1 -1
  235. package/dist/components/GenericCard/TableRowGenericCard.js +248 -209
  236. package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
  237. package/dist/components/GoalsV2/GoalsV2.Desktop.d.ts.map +1 -1
  238. package/dist/components/GoalsV2/GoalsV2.Desktop.js +14 -15
  239. package/dist/components/GoalsV2/GoalsV2.Desktop.js.map +1 -1
  240. package/dist/components/GoogleAnalytics/GoogleAnalytics.js +1 -1
  241. package/dist/components/HasAccess/HasAccessV2.js +1 -1
  242. package/dist/components/HasAccess/useHasAccess.js +1 -1
  243. package/dist/components/HeaderCard.js +17 -13
  244. package/dist/components/HeaderCard.js.map +1 -1
  245. package/dist/components/IDUReport/IDUReportSubmissionInfo.js +23 -23
  246. package/dist/components/IDUReport/IDUReportSubmissionInfo.js.map +1 -1
  247. package/dist/components/Icon/Icon.js +52 -52
  248. package/dist/components/Icon/Icon.js.map +1 -1
  249. package/dist/components/IconSvg/IconSvg.d.ts +1 -1
  250. package/dist/components/IconSvg/IconSvg.d.ts.map +1 -1
  251. package/dist/components/IconSvg/IconSvg.js +215 -171
  252. package/dist/components/IconSvg/IconSvg.js.map +1 -1
  253. package/dist/components/JSONArrayEditor/useParseCsv.d.ts +1 -1
  254. package/dist/components/JSONArrayEditor/useParseCsv.d.ts.map +1 -1
  255. package/dist/components/JSONArrayEditor/useParseCsv.js +9 -9
  256. package/dist/components/JSONArrayEditor/useParseCsv.js.map +1 -1
  257. package/dist/components/Markdown/MarkdownCollapse.js +7 -7
  258. package/dist/components/Markdown/MarkdownEditor.js +11 -11
  259. package/dist/components/Markdown/MarkdownGithub.js +1 -1
  260. package/dist/components/Markdown/MarkdownPopover.js +6 -6
  261. package/dist/components/Markdown/MarkdownPopover.js.map +1 -1
  262. package/dist/components/Markdown/MarkdownSynapse.d.ts.map +1 -1
  263. package/dist/components/Markdown/MarkdownSynapse.js +139 -135
  264. package/dist/components/Markdown/MarkdownSynapse.js.map +1 -1
  265. package/dist/components/Markdown/MarkdownUtils.d.ts +8 -0
  266. package/dist/components/Markdown/MarkdownUtils.d.ts.map +1 -1
  267. package/dist/components/Markdown/MarkdownUtils.js +139 -65
  268. package/dist/components/Markdown/MarkdownUtils.js.map +1 -1
  269. package/dist/components/Markdown/UserMentionModal.js +18 -18
  270. package/dist/components/Markdown/UserMentionModal.js.map +1 -1
  271. package/dist/components/Markdown/widget/MarkdownButton.js +3 -3
  272. package/dist/components/Markdown/widget/MarkdownButton.js.map +1 -1
  273. package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.d.ts.map +1 -1
  274. package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js +9 -8
  275. package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js.map +1 -1
  276. package/dist/components/Plot/SynapsePlot.css +1 -0
  277. package/dist/components/Plot/SynapsePlot.d.ts +2 -0
  278. package/dist/components/Plot/SynapsePlot.d.ts.map +1 -1
  279. package/dist/components/Plot/SynapsePlot.js +43 -39
  280. package/dist/components/Plot/SynapsePlot.js.map +1 -1
  281. package/dist/components/Plot/SynapsePlot.scss +8 -0
  282. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js +1 -1
  283. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts +1 -0
  284. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
  285. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +137 -135
  286. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
  287. package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.d.ts +1 -1
  288. package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.d.ts.map +1 -1
  289. package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.js.map +1 -1
  290. package/dist/components/Resources/Resources.Desktop.js +7 -7
  291. package/dist/components/Resources/Resources.Mobile.js +6 -6
  292. package/dist/components/StorybookComponentWrapper.js +6 -3
  293. package/dist/components/StorybookComponentWrapper.js.map +1 -1
  294. package/dist/components/SubsectionRowRenderer/SubsectionRowRenderer.js +3 -3
  295. package/dist/components/SustainabilityScorecard/SustainabilityScorecardSummary.js +10 -10
  296. package/dist/components/SynapseChat/SynapseChat.d.ts +7 -1
  297. package/dist/components/SynapseChat/SynapseChat.d.ts.map +1 -1
  298. package/dist/components/SynapseChat/SynapseChat.js +76 -67
  299. package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
  300. package/dist/components/SynapseChat/SynapseChatInteraction.d.ts +2 -1
  301. package/dist/components/SynapseChat/SynapseChatInteraction.d.ts.map +1 -1
  302. package/dist/components/SynapseChat/SynapseChatInteraction.js +83 -58
  303. package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
  304. package/dist/components/SynapseChat/SynapseChatMessage.d.ts +1 -0
  305. package/dist/components/SynapseChat/SynapseChatMessage.d.ts.map +1 -1
  306. package/dist/components/SynapseChat/SynapseChatMessage.js +16 -15
  307. package/dist/components/SynapseChat/SynapseChatMessage.js.map +1 -1
  308. package/dist/components/SynapseChat/SynapsePortalChatDialog.d.ts +12 -0
  309. package/dist/components/SynapseChat/SynapsePortalChatDialog.d.ts.map +1 -0
  310. package/dist/components/SynapseChat/SynapsePortalChatDialog.js +30 -0
  311. package/dist/components/SynapseChat/SynapsePortalChatDialog.js.map +1 -0
  312. package/dist/components/SynapseChat/extractMessageFromTraceEvent.d.ts.map +1 -1
  313. package/dist/components/SynapseChat/extractMessageFromTraceEvent.js +22 -16
  314. package/dist/components/SynapseChat/extractMessageFromTraceEvent.js.map +1 -1
  315. package/dist/components/SynapseChat/index.d.ts +2 -0
  316. package/dist/components/SynapseChat/index.d.ts.map +1 -1
  317. package/dist/components/SynapseChat/index.js +5 -3
  318. package/dist/components/SynapseChat/index.js.map +1 -1
  319. package/dist/components/SynapseChat/useChatState.d.ts +1 -1
  320. package/dist/components/SynapseChat/useChatState.d.ts.map +1 -1
  321. package/dist/components/SynapseChat/useChatState.js +10 -7
  322. package/dist/components/SynapseChat/useChatState.js.map +1 -1
  323. package/dist/components/SynapseForm/WarningDialog.d.ts +1 -0
  324. package/dist/components/SynapseForm/WarningDialog.d.ts.map +1 -1
  325. package/dist/components/SynapseForm/WarningDialog.js +18 -16
  326. package/dist/components/SynapseForm/WarningDialog.js.map +1 -1
  327. package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.js +1 -1
  328. package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js +25 -25
  329. package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js.map +1 -1
  330. package/dist/components/SynapseSearchPageResults/HasAccessChip.js +1 -1
  331. package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.d.ts.map +1 -1
  332. package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.js +12 -13
  333. package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.js.map +1 -1
  334. package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.js +5 -5
  335. package/dist/components/SynapseTable/ExpandableTableDataCell.d.ts.map +1 -1
  336. package/dist/components/SynapseTable/ExpandableTableDataCell.js +3 -1
  337. package/dist/components/SynapseTable/ExpandableTableDataCell.js.map +1 -1
  338. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js +13 -13
  339. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js.map +1 -1
  340. package/dist/components/SynapseTable/SynapseTable.js +4 -4
  341. package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.d.ts.map +1 -1
  342. package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.js +122 -122
  343. package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.js.map +1 -1
  344. package/dist/components/SynapseTable/TopLevelControls/TopLevelControlsUtils.js +9 -9
  345. package/dist/components/SynapseTable/TopLevelControls/TopLevelControlsUtils.js.map +1 -1
  346. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +5 -5
  347. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +1 -1
  348. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditor.js +1 -1
  349. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +1 -1
  350. package/dist/components/TableFeedCards/TableFeedCards.js +9 -9
  351. package/dist/components/TermsAndConditions/TermsAndConditionsItem.js +10 -10
  352. package/dist/components/TextToComponentCollapse.d.ts +16 -0
  353. package/dist/components/TextToComponentCollapse.d.ts.map +1 -0
  354. package/dist/components/TextToComponentCollapse.js +29 -0
  355. package/dist/components/TextToComponentCollapse.js.map +1 -0
  356. package/dist/components/TimelinePlot/TimelinePlotSpeciesSelector.js +9 -9
  357. package/dist/components/UserSearchBox/UserSearchBox.d.ts +23 -0
  358. package/dist/components/UserSearchBox/UserSearchBox.d.ts.map +1 -0
  359. package/dist/components/UserSearchBox/UserSearchBox.js +146 -0
  360. package/dist/components/UserSearchBox/UserSearchBox.js.map +1 -0
  361. package/dist/components/WikiMarkdownEditorButton/WikiMarkdownEditorButton.js +13 -13
  362. package/dist/components/WizardChoiceButton/WizardChoiceButton.js +3 -3
  363. package/dist/components/dataaccess/AccessHistoryDashboard.js +5 -5
  364. package/dist/components/dataaccess/AccessHistoryDashboard.js.map +1 -1
  365. package/dist/components/dataaccess/AccessRequirementDashboard.js +4 -4
  366. package/dist/components/dataaccess/AccessRequirementDashboard.js.map +1 -1
  367. package/dist/components/dataaccess/AccessSubmissionDashboard.js +1 -1
  368. package/dist/components/dataaccess/AccessSubmissionDashboard.js.map +1 -1
  369. package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js +5 -5
  370. package/dist/components/dataaccess/UseAccessRequirementTable.js +3 -3
  371. package/dist/components/dataaccess/UseAccessRequirementTable.js.map +1 -1
  372. package/dist/components/doi/CreateOrUpdateDoiModal.js +1 -1
  373. package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js +10 -5
  374. package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js.map +1 -1
  375. package/dist/components/download_list/DownloadConfirmationUI.d.ts +1 -1
  376. package/dist/components/download_list/DownloadConfirmationUI.js +22 -22
  377. package/dist/components/download_list/DownloadConfirmationUI.js.map +1 -1
  378. package/dist/components/download_list/DownloadConfirmationUtils.js +4 -4
  379. package/dist/components/download_list/DownloadConfirmationUtils.js.map +1 -1
  380. package/dist/components/entity/metadata/EntityModal.js +1 -1
  381. package/dist/components/entity/metadata/MetadataTable.js +1 -1
  382. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js +1 -1
  383. package/dist/components/entity/page/title_bar/EntityTitleBarVersionInfo.js +1 -1
  384. package/dist/components/entity/page/title_bar/TitleBarProperties.js +1 -1
  385. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.d.ts.map +1 -1
  386. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js +27 -26
  387. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
  388. package/dist/components/index.js +125 -121
  389. package/dist/components/index.js.map +1 -1
  390. package/dist/components/layout/InfiniteTableLayout.js +1 -1
  391. package/dist/components/row_renderers/ObservationCard.js +12 -11
  392. package/dist/components/row_renderers/ObservationCard.js.map +1 -1
  393. package/dist/components/row_renderers/utils/CardFooter.d.ts +1 -3
  394. package/dist/components/row_renderers/utils/CardFooter.d.ts.map +1 -1
  395. package/dist/components/row_renderers/utils/CardFooter.js +31 -45
  396. package/dist/components/row_renderers/utils/CardFooter.js.map +1 -1
  397. package/dist/components/styled/HoverPopover.css +1 -0
  398. package/dist/components/styled/HoverPopover.d.ts +28 -0
  399. package/dist/components/styled/HoverPopover.d.ts.map +1 -0
  400. package/dist/components/styled/HoverPopover.js +103 -0
  401. package/dist/components/styled/HoverPopover.js.map +1 -0
  402. package/dist/components/styled/HoverPopover.module.scss +9 -0
  403. package/dist/components/styled/HoverPopover.module.scss.js +10 -0
  404. package/dist/components/styled/HoverPopover.module.scss.js.map +1 -0
  405. package/dist/components/styled/index.d.ts +2 -0
  406. package/dist/components/styled/index.d.ts.map +1 -1
  407. package/dist/components/styled/index.js +11 -9
  408. package/dist/components/styled/index.js.map +1 -1
  409. package/dist/components/table/CsvPreview/CsvPreview.js +10 -5
  410. package/dist/components/table/CsvPreview/CsvPreview.js.map +1 -1
  411. package/dist/components/table/CsvPreview/CsvPreviewDialog.js +10 -5
  412. package/dist/components/table/CsvPreview/CsvPreviewDialog.js.map +1 -1
  413. package/dist/components/widgets/Range.js +1 -1
  414. package/dist/components/widgets/facet-nav/FacetNavPanel.d.ts.map +1 -1
  415. package/dist/components/widgets/facet-nav/FacetNavPanel.js +35 -32
  416. package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
  417. package/dist/components/widgets/facet-nav/PlotsContainer.d.ts +1 -1
  418. package/dist/components/widgets/facet-nav/PlotsContainer.d.ts.map +1 -1
  419. package/dist/components/widgets/facet-nav/PlotsContainer.js +69 -68
  420. package/dist/components/widgets/facet-nav/PlotsContainer.js.map +1 -1
  421. package/dist/components/widgets/facet-nav/useFacetPlots.d.ts.map +1 -1
  422. package/dist/components/widgets/facet-nav/useFacetPlots.js +24 -21
  423. package/dist/components/widgets/facet-nav/useFacetPlots.js.map +1 -1
  424. package/dist/components/widgets/query-filter/FacetFilterControls.js +3 -3
  425. package/dist/features/curator/GridPage/GridPage.js +10 -5
  426. package/dist/features/curator/GridPage/GridPage.js.map +1 -1
  427. package/dist/features/curator/GridPage/components/GridPageTitle.js +10 -5
  428. package/dist/features/curator/GridPage/components/GridPageTitle.js.map +1 -1
  429. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js +1 -1
  430. package/dist/index.js +155 -151
  431. package/dist/index.js.map +1 -1
  432. package/dist/mocks/msw/handlers/accessRequirementHandlers.js +5 -5
  433. package/dist/mocks/msw/handlers/projectStorageHandlers.js +5 -5
  434. package/dist/mocks/msw/handlers/wikiHandlers.js +1 -1
  435. package/dist/mocks/msw/handlers.d.ts.map +1 -1
  436. package/dist/mocks/msw/handlers.js +67 -59
  437. package/dist/mocks/msw/handlers.js.map +1 -1
  438. package/dist/style/base/_core.scss +0 -1
  439. package/dist/style/components/_all.scss +0 -2
  440. package/dist/style/components/_cards.scss +22 -0
  441. package/dist/style/components/_download-list-v2.scss +1 -1
  442. package/dist/style/components/_entity-badge.scss +0 -2
  443. package/dist/style/components/_expandable_table_data.scss +3 -3
  444. package/dist/style/components/_query-wrapper-plot-nav.scss +13 -0
  445. package/dist/style/components/facet_nav/_facet-nav-panel.scss +3 -0
  446. package/dist/style/components/facet_nav/_facet-nav.scss +4 -0
  447. package/dist/style/main.css +1 -1
  448. package/dist/synapse-client/SynapseClient.js +118 -118
  449. package/dist/synapse-client/SynapseClient.js.map +1 -1
  450. package/dist/synapse-queries/auth/useOIDC.js +1 -1
  451. package/dist/synapse-queries/auth/useTwoFactorEnrollment.js +1 -1
  452. package/dist/synapse-queries/entity/index.js +6 -6
  453. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js +1 -1
  454. package/dist/synapse-queries/index.js +1 -1
  455. package/dist/synapse-queries/user/usePersonalAccessToken.js +1 -1
  456. package/dist/testutils/vitest.setup.js +10 -11
  457. package/dist/testutils/vitest.setup.js.map +1 -1
  458. package/dist/theme/DefaultTheme.js +1 -1
  459. package/dist/theme/ThemeProvider.d.ts +2 -1
  460. package/dist/theme/ThemeProvider.d.ts.map +1 -1
  461. package/dist/theme/ThemeProvider.js +11 -10
  462. package/dist/theme/ThemeProvider.js.map +1 -1
  463. package/dist/theme/index.js +1 -1
  464. package/dist/theme/mergeTheme.js +1 -1
  465. package/dist/tsconfig.build.tsbuildinfo +1 -1
  466. package/dist/utils/AppUtils/AppUtils.js +1 -1
  467. package/dist/utils/AppUtils/session/ApplicationSessionManager.d.ts.map +1 -1
  468. package/dist/utils/AppUtils/session/ApplicationSessionManager.js.map +1 -1
  469. package/dist/utils/context/FullContextProvider.js +9 -9
  470. package/dist/utils/context/FullContextProvider.js.map +1 -1
  471. package/dist/utils/context/SynapseContext.d.ts.map +1 -1
  472. package/dist/utils/context/SynapseContext.js +1 -0
  473. package/dist/utils/context/SynapseContext.js.map +1 -1
  474. package/dist/utils/functions/SanitizeHtmlUtils.d.ts.map +1 -1
  475. package/dist/utils/functions/SanitizeHtmlUtils.js +34 -40
  476. package/dist/utils/functions/SanitizeHtmlUtils.js.map +1 -1
  477. package/dist/utils/functions/SqlFunctions.d.ts +4 -0
  478. package/dist/utils/functions/SqlFunctions.d.ts.map +1 -1
  479. package/dist/utils/functions/SqlFunctions.js +25 -23
  480. package/dist/utils/functions/SqlFunctions.js.map +1 -1
  481. package/dist/utils/functions/deepLinkingUtils.js +10 -10
  482. package/dist/utils/functions/deepLinkingUtils.js.map +1 -1
  483. package/dist/utils/hooks/index.js +6 -6
  484. package/dist/utils/hooks/useDetectSSOCode.js +3 -3
  485. package/dist/utils/hooks/useGetEntityMetadata.js +1 -1
  486. package/dist/utils/hooks/useNativeSearchParams.d.ts.map +1 -1
  487. package/dist/utils/hooks/useNativeSearchParams.js +1 -1
  488. package/dist/utils/hooks/useNativeSearchParams.js.map +1 -1
  489. package/dist/utils/hooks/useOneSageURL.d.ts.map +1 -1
  490. package/dist/utils/hooks/useOneSageURL.js +15 -15
  491. package/dist/utils/hooks/useOneSageURL.js.map +1 -1
  492. package/dist/utils/hooks/useSourceAppConfigs.d.ts +1 -0
  493. package/dist/utils/hooks/useSourceAppConfigs.d.ts.map +1 -1
  494. package/dist/utils/hooks/useSourceAppConfigs.js +79 -77
  495. package/dist/utils/hooks/useSourceAppConfigs.js.map +1 -1
  496. package/dist/utils/index.js +4 -4
  497. package/package.json +15 -16
  498. package/dist/_virtual/index.js +0 -6
  499. package/dist/_virtual/index.js.map +0 -1
  500. package/dist/_virtual/index2.js +0 -5
  501. package/dist/_virtual/index2.js.map +0 -1
  502. package/dist/_virtual/index3.js +0 -5
  503. package/dist/_virtual/index3.js.map +0 -1
  504. package/dist/_virtual/index4.js +0 -5
  505. package/dist/_virtual/index4.js.map +0 -1
  506. package/dist/_virtual/index5.js +0 -5
  507. package/dist/_virtual/index5.js.map +0 -1
  508. package/dist/assets/themed_icons/Challenge.d.ts +0 -3
  509. package/dist/assets/themed_icons/Challenge.d.ts.map +0 -1
  510. package/dist/assets/themed_icons/Challenge.js +0 -25
  511. package/dist/assets/themed_icons/Challenge.js.map +0 -1
  512. package/dist/components/UserSearchBox/UserSearchBoxV2.d.ts +0 -21
  513. package/dist/components/UserSearchBox/UserSearchBoxV2.d.ts.map +0 -1
  514. package/dist/components/UserSearchBox/UserSearchBoxV2.js +0 -144
  515. package/dist/components/UserSearchBox/UserSearchBoxV2.js.map +0 -1
  516. package/dist/node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js +0 -53
  517. package/dist/node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js.map +0 -1
  518. package/dist/node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js +0 -948
  519. package/dist/node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js.map +0 -1
  520. package/dist/node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js +0 -30
  521. package/dist/node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js.map +0 -1
  522. 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
  523. 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
  524. package/dist/style/components/_download-cart-page.scss +0 -204
  525. 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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"}
@@ -37,11 +37,14 @@ import "@mui/material/SvgIcon";
37
37
  import "../../assets/icons/AccessPending.svg.js";
38
38
  import "../../assets/icons/AccessPendingCloud.svg.js";
39
39
  import "../../assets/icons/FileWithShield.svg.js";
40
+ import "../../assets/icons/MultiFile.svg.js";
41
+ import "../../assets/icons/UnpackagableFile.svg.js";
40
42
  import "../../assets/icons/bioChemicalPhysical.svg.js";
41
43
  import "../../assets/icons/computationalTool.svg.js";
42
44
  import "../../assets/icons/dataReuse.svg.js";
43
45
  import "../../assets/icons/inSilicoModel.svg.js";
44
46
  import "../../assets/icons/modelSystem.svg.js";
47
+ import "../../assets/mui_components/PackagableFile.svg.js";
45
48
  import "../../assets/icons/spatialProfiling.svg.js";
46
49
  import "@mui/icons-material";
47
50
  import "../../assets/icons/chart2.svg.js";
@@ -57,6 +60,7 @@ import "../../assets/icons/study-complete.svg.js";
57
60
  import "../../assets/icons/translational.svg.js";
58
61
  import "../../assets/icons/tree_horizontal.svg.js";
59
62
  import "../../assets/icons/standardDataModel.svg.js";
63
+ import "../../assets/icons/Challenge.svg.js";
60
64
  import K from "../ShowMore/ShowMore.js";
61
65
  import "@mui/material/Skeleton";
62
66
  import { SkeletonTable as Z } from "../Skeleton/SkeletonTable.js";
@@ -233,7 +237,7 @@ function rt(a) {
233
237
  ) }, r))
234
238
  ] });
235
239
  }
236
- function yr(a) {
240
+ function Tr(a) {
237
241
  return /* @__PURE__ */ t(
238
242
  H,
239
243
  {
@@ -243,6 +247,6 @@ function yr(a) {
243
247
  );
244
248
  }
245
249
  export {
246
- yr as default
250
+ Tr as default
247
251
  };
248
252
  //# sourceMappingURL=FacetPlotsCard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FacetPlotsCard.js","sources":["../../../src/components/FeaturedDataTabs/FacetPlotsCard.tsx"],"sourcesContent":["import { useSynapseContext } from '@/utils/context/SynapseContext'\nimport {\n Box,\n Button,\n Divider,\n Paper,\n Skeleton,\n Typography,\n} from '@mui/material'\nimport {\n ColumnTypeEnum,\n FacetColumnResult,\n FacetColumnResultValueCount,\n FacetColumnResultValues,\n} from '@sage-bionetworks/synapse-types'\nimport { useSuspenseQuery } from '@tanstack/react-query'\nimport { times } from 'lodash-es'\nimport Plotly from 'plotly.js-basic-dist'\nimport { Fragment, Suspense, useMemo } from 'react'\nimport Plot from '../Plot/Plot'\nimport { useQueryVisualizationContext } from '../QueryVisualizationWrapper'\nimport { useSuspenseGetQueryMetadata } from '../QueryWrapper/useGetQueryMetadata'\nimport { ShowMore } from '../row_renderers/utils'\nimport { SkeletonParagraph, SkeletonTable } from '../Skeleton'\nimport {\n extractPlotDataArray,\n getPlotStyle,\n PlotType,\n} from '../widgets/facet-nav/FacetNavPanel'\nimport { FacetPlotLegendTable } from '../widgets/facet-nav/FacetPlotLegendTable'\nimport { getFacets } from '../widgets/facet-nav/useFacetPlots'\nimport {\n FACET_PLOTS_CARD_CLASSNAME,\n FACET_PLOTS_CARD_PLOT_CONTAINER_CLASSNAME,\n FACET_PLOTS_CARD_TITLE_CONTAINER_CLASSNAME,\n FacetPlotsCardPlotContainer,\n FacetPlotsCardTitleContainer,\n} from './FacetPlotsCardGrid'\nimport { useMeasure } from '@react-hookz/web'\n\nexport type FacetPlotsCardProps = {\n title?: string\n description?: string\n facetsToPlot?: string[]\n detailsPagePath?: string\n plotType?: PlotType\n}\n\nconst layout: Partial<Plotly.Layout> = {\n showlegend: false,\n annotations: [],\n margin: { l: 0, r: 0, b: 0, t: 0, pad: 0 },\n yaxis: {\n visible: false,\n showgrid: false,\n },\n xaxis: {\n visible: false,\n showgrid: false,\n },\n}\n\nfunction LoadingCard(props: { numPlots: number }) {\n const { numPlots } = props\n return (\n <Paper className={FACET_PLOTS_CARD_CLASSNAME}>\n <FacetPlotsCardTitleContainer\n className={FACET_PLOTS_CARD_TITLE_CONTAINER_CLASSNAME}\n >\n <Skeleton width={'60%'} height={'24px'} />\n\n <SkeletonParagraph numRows={5} />\n\n <Skeleton width={'40%'}>\n <Button variant={'contained'}>Explore</Button>\n </Skeleton>\n </FacetPlotsCardTitleContainer>\n {times(numPlots).map(index => (\n <FacetPlotsCardPlotContainer\n key={index}\n className={FACET_PLOTS_CARD_PLOT_CONTAINER_CLASSNAME}\n sx={{\n py: 3,\n gridRow: `plot${index}`,\n }}\n >\n <Skeleton width={'100%'} height={'300px'} />\n <SkeletonTable numRows={4} numCols={2} />\n </FacetPlotsCardPlotContainer>\n ))}\n </Paper>\n )\n}\n\nfunction FacetPlotsCard(props: FacetPlotsCardProps) {\n const {\n title,\n description,\n facetsToPlot,\n detailsPagePath,\n plotType = 'PIE',\n } = props\n const { accessToken } = useSynapseContext()\n const { data: queryMetadata } = useSuspenseGetQueryMetadata()\n const { getColumnDisplayName } = useQueryVisualizationContext()\n const [plotContainerMeasurements, plotContainerRef] = useMeasure()\n\n const facetDataArray = useMemo(() => {\n if (!facetsToPlot) {\n return []\n }\n\n return getFacets(queryMetadata, facetsToPlot)\n }, [facetsToPlot, queryMetadata])\n\n const currentLayout: Partial<Plotly.Layout> = useMemo(() => {\n return {\n ...layout,\n barmode: plotType === 'STACKED_HORIZONTAL_BAR' ? 'stack' : undefined,\n }\n }, [plotType])\n const maxPlotHeight = plotType === 'STACKED_HORIZONTAL_BAR' ? 50 : 150\n const { data: facetPlotDataArray } = useSuspenseQuery({\n queryKey: ['facetPlotDataArray', facetsToPlot, facetDataArray],\n queryFn: async () => {\n if (!facetsToPlot) {\n return []\n }\n\n const getColumnType = (\n facetToPlot: FacetColumnResult,\n ): ColumnTypeEnum | undefined =>\n queryMetadata.columnModels!.find(\n columnModel => columnModel.name === facetToPlot.columnName,\n )?.columnType as ColumnTypeEnum\n\n return Promise.all(\n facetDataArray.map(async (item, index) => {\n const plotData = await extractPlotDataArray(\n item as FacetColumnResultValues,\n getColumnType(item),\n index + 1, //individual plot rgbIndex\n plotType,\n accessToken,\n )\n return plotData\n }),\n )\n },\n })\n\n const selectedFacetValue = useMemo(() => {\n if (!facetsToPlot) {\n return ''\n }\n\n // If we are showing a facet selection based card, then set the selectedFacetValue. For example, facet column \"study\" with value \"ROSMAP\"\n const selectedFacet: FacetColumnResultValueCount | undefined = queryMetadata\n ?.facets!.map(item => {\n const facetValues: FacetColumnResultValueCount[] = (\n item as FacetColumnResultValues\n ).facetValues\n if (facetValues) {\n const filteredFacetValues: FacetColumnResultValueCount[] =\n facetValues.filter(facetValue => {\n return facetValue.isSelected\n })\n return filteredFacetValues.length > 0\n ? filteredFacetValues[0]\n : undefined\n } else {\n return undefined\n }\n })\n .filter(x => x !== undefined)[0]\n\n if (selectedFacet && selectedFacet.value) {\n return selectedFacet?.value\n }\n return ''\n }, [facetsToPlot, queryMetadata?.facets])\n\n const isShowingMultiplePlots = facetPlotDataArray.length > 1\n const cardTitle =\n title ??\n (isShowingMultiplePlots\n ? selectedFacetValue\n : getColumnDisplayName(facetDataArray[0].columnName))\n return (\n <Paper className={FACET_PLOTS_CARD_CLASSNAME} sx={{ overflow: 'hidden' }}>\n <FacetPlotsCardTitleContainer\n className={FACET_PLOTS_CARD_TITLE_CONTAINER_CLASSNAME}\n >\n <Typography variant={'headline1'}>{cardTitle}</Typography>\n {description && (\n <Typography variant={'body1'} sx={{ color: 'grey.700', my: 2 }}>\n <ShowMore summary={description} maxCharacterCount={200} />\n </Typography>\n )}\n\n {detailsPagePath && selectedFacetValue && (\n <Box sx={{ my: 2 }}>\n <Button\n variant={'contained'}\n href={detailsPagePath}\n color={'secondary'}\n sx={theme => ({\n [theme.breakpoints.down('sm')]: { width: '100%' },\n })}\n >\n Explore {selectedFacetValue}\n </Button>\n </Box>\n )}\n </FacetPlotsCardTitleContainer>\n\n {/* create a plot for every facet to be plotted */}\n {facetPlotDataArray.map((plotData, index) => {\n return (\n <Fragment key={index}>\n <FacetPlotsCardPlotContainer\n className={FACET_PLOTS_CARD_PLOT_CONTAINER_CLASSNAME}\n sx={{\n pt: index === 0 ? 5 : 0,\n gridRow: `plot${index}`,\n }}\n key={index}\n >\n {index != 0 && <Divider sx={{ mt: 2, mb: 4 }} />}\n <Box sx={{ minHeight: '130px' }}>\n <Box\n ref={plotContainerRef}\n sx={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n <Plot\n key={`${facetsToPlot![index]}-${\n plotContainerMeasurements?.width\n }`}\n layout={currentLayout}\n data={plotData?.data ?? []}\n style={getPlotStyle(\n plotContainerMeasurements?.width,\n plotType,\n maxPlotHeight,\n )}\n config={{ displayModeBar: false }}\n />\n </Box>\n <Box sx={{ mt: 4, width: '100%' }}>\n <FacetPlotLegendTable\n facetName={getColumnDisplayName(\n facetDataArray[index].columnName,\n )}\n labels={plotData?.labels}\n colors={plotData?.colors}\n isExpanded={false}\n linkToFullQuery={detailsPagePath}\n />\n </Box>\n </Box>\n </FacetPlotsCardPlotContainer>\n </Fragment>\n )\n })}\n </Paper>\n )\n}\n\nexport default function FacetPlotsCardWithSuspense(props: FacetPlotsCardProps) {\n return (\n <Suspense\n fallback={<LoadingCard numPlots={(props.facetsToPlot ?? []).length} />}\n >\n <FacetPlotsCard {...props} />\n </Suspense>\n )\n}\n"],"names":["layout","LoadingCard","props","numPlots","jsxs","Paper","FACET_PLOTS_CARD_CLASSNAME","FacetPlotsCardTitleContainer","FACET_PLOTS_CARD_TITLE_CONTAINER_CLASSNAME","jsx","Skeleton","SkeletonParagraph","Button","times","index","FacetPlotsCardPlotContainer","FACET_PLOTS_CARD_PLOT_CONTAINER_CLASSNAME","SkeletonTable","FacetPlotsCard","title","description","facetsToPlot","detailsPagePath","plotType","accessToken","useSynapseContext","queryMetadata","useSuspenseGetQueryMetadata","getColumnDisplayName","useQueryVisualizationContext","plotContainerMeasurements","plotContainerRef","useMeasure","facetDataArray","useMemo","getFacets","currentLayout","maxPlotHeight","facetPlotDataArray","useSuspenseQuery","getColumnType","facetToPlot","columnModel","item","extractPlotDataArray","selectedFacetValue","selectedFacet","facetValues","filteredFacetValues","facetValue","x","isShowingMultiplePlots","cardTitle","Typography","ShowMore","Box","theme","plotData","Fragment","Divider","Plot","getPlotStyle","FacetPlotLegendTable","FacetPlotsCardWithSuspense","Suspense"],"mappings":"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"}
1
+ {"version":3,"file":"FacetPlotsCard.js","sources":["../../../src/components/FeaturedDataTabs/FacetPlotsCard.tsx"],"sourcesContent":["import { useSynapseContext } from '@/utils/context/SynapseContext'\nimport {\n Box,\n Button,\n Divider,\n Paper,\n Skeleton,\n Typography,\n} from '@mui/material'\nimport {\n ColumnTypeEnum,\n FacetColumnResult,\n FacetColumnResultValueCount,\n FacetColumnResultValues,\n} from '@sage-bionetworks/synapse-types'\nimport { useSuspenseQuery } from '@tanstack/react-query'\nimport { times } from 'lodash-es'\nimport Plotly from 'plotly.js-basic-dist'\nimport { Fragment, Suspense, useMemo } from 'react'\nimport Plot from '../Plot/Plot'\nimport { useQueryVisualizationContext } from '../QueryVisualizationWrapper'\nimport { useSuspenseGetQueryMetadata } from '../QueryWrapper/useGetQueryMetadata'\nimport { ShowMore } from '../row_renderers/utils'\nimport { SkeletonParagraph, SkeletonTable } from '../Skeleton'\nimport {\n extractPlotDataArray,\n getPlotStyle,\n PlotType,\n} from '../widgets/facet-nav/FacetNavPanel'\nimport { FacetPlotLegendTable } from '../widgets/facet-nav/FacetPlotLegendTable'\nimport { getFacets } from '../widgets/facet-nav/useFacetPlots'\nimport {\n FACET_PLOTS_CARD_CLASSNAME,\n FACET_PLOTS_CARD_PLOT_CONTAINER_CLASSNAME,\n FACET_PLOTS_CARD_TITLE_CONTAINER_CLASSNAME,\n FacetPlotsCardPlotContainer,\n FacetPlotsCardTitleContainer,\n} from './FacetPlotsCardGrid'\nimport { useMeasure } from '@react-hookz/web'\n\nexport type FacetPlotsCardProps = {\n title?: string\n description?: string\n facetsToPlot?: string[]\n detailsPagePath?: string\n plotType?: PlotType\n}\n\nconst layout: Partial<Plotly.Layout> = {\n showlegend: false,\n annotations: [],\n margin: { l: 0, r: 0, b: 0, t: 0, pad: 0 },\n yaxis: {\n visible: false,\n showgrid: false,\n },\n xaxis: {\n visible: false,\n showgrid: false,\n },\n}\n\nfunction LoadingCard(props: { numPlots: number }) {\n const { numPlots } = props\n return (\n <Paper className={FACET_PLOTS_CARD_CLASSNAME}>\n <FacetPlotsCardTitleContainer\n className={FACET_PLOTS_CARD_TITLE_CONTAINER_CLASSNAME}\n >\n <Skeleton width={'60%'} height={'24px'} />\n\n <SkeletonParagraph numRows={5} />\n\n <Skeleton width={'40%'}>\n <Button variant={'contained'}>Explore</Button>\n </Skeleton>\n </FacetPlotsCardTitleContainer>\n {times(numPlots).map(index => (\n <FacetPlotsCardPlotContainer\n key={index}\n className={FACET_PLOTS_CARD_PLOT_CONTAINER_CLASSNAME}\n sx={{\n py: 3,\n gridRow: `plot${index}`,\n }}\n >\n <Skeleton width={'100%'} height={'300px'} />\n <SkeletonTable numRows={4} numCols={2} />\n </FacetPlotsCardPlotContainer>\n ))}\n </Paper>\n )\n}\n\nfunction FacetPlotsCard(props: FacetPlotsCardProps) {\n const {\n title,\n description,\n facetsToPlot,\n detailsPagePath,\n plotType = 'PIE',\n } = props\n const { accessToken } = useSynapseContext()\n const { data: queryMetadata } = useSuspenseGetQueryMetadata()\n const { getColumnDisplayName } = useQueryVisualizationContext()\n const [plotContainerMeasurements, plotContainerRef] = useMeasure()\n\n const facetDataArray = useMemo(() => {\n if (!facetsToPlot) {\n return []\n }\n\n return getFacets(queryMetadata, facetsToPlot)\n }, [facetsToPlot, queryMetadata])\n\n const currentLayout: Partial<Plotly.Layout> = useMemo(() => {\n return {\n ...layout,\n barmode: plotType === 'STACKED_HORIZONTAL_BAR' ? 'stack' : undefined,\n }\n }, [plotType])\n const maxPlotHeight = plotType === 'STACKED_HORIZONTAL_BAR' ? 50 : 150\n const { data: facetPlotDataArray } = useSuspenseQuery({\n queryKey: ['facetPlotDataArray', facetsToPlot, facetDataArray],\n queryFn: async () => {\n if (!facetsToPlot) {\n return []\n }\n\n const getColumnType = (\n facetToPlot: FacetColumnResult,\n ): ColumnTypeEnum | undefined =>\n queryMetadata.columnModels!.find(\n columnModel => columnModel.name === facetToPlot.columnName,\n )?.columnType as ColumnTypeEnum\n\n return Promise.all(\n facetDataArray.map(async (item, index) => {\n const plotData = await extractPlotDataArray(\n item as FacetColumnResultValues,\n getColumnType(item),\n index + 1, //individual plot rgbIndex\n plotType,\n accessToken,\n )\n return plotData\n }),\n )\n },\n })\n\n const selectedFacetValue = useMemo(() => {\n if (!facetsToPlot) {\n return ''\n }\n\n // If we are showing a facet selection based card, then set the selectedFacetValue. For example, facet column \"study\" with value \"ROSMAP\"\n const selectedFacet: FacetColumnResultValueCount | undefined = queryMetadata\n ?.facets!.map(item => {\n const facetValues: FacetColumnResultValueCount[] = (\n item as FacetColumnResultValues\n ).facetValues\n if (facetValues) {\n const filteredFacetValues: FacetColumnResultValueCount[] =\n facetValues.filter(facetValue => {\n return facetValue.isSelected\n })\n return filteredFacetValues.length > 0\n ? filteredFacetValues[0]\n : undefined\n } else {\n return undefined\n }\n })\n .filter(x => x !== undefined)[0]\n\n if (selectedFacet && selectedFacet.value) {\n return selectedFacet?.value\n }\n return ''\n }, [facetsToPlot, queryMetadata?.facets])\n\n const isShowingMultiplePlots = facetPlotDataArray.length > 1\n const cardTitle =\n title ??\n (isShowingMultiplePlots\n ? selectedFacetValue\n : getColumnDisplayName(facetDataArray[0].columnName))\n return (\n <Paper className={FACET_PLOTS_CARD_CLASSNAME} sx={{ overflow: 'hidden' }}>\n <FacetPlotsCardTitleContainer\n className={FACET_PLOTS_CARD_TITLE_CONTAINER_CLASSNAME}\n >\n <Typography variant={'headline1'}>{cardTitle}</Typography>\n {description && (\n <Typography variant={'body1'} sx={{ color: 'grey.700', my: 2 }}>\n <ShowMore summary={description} maxCharacterCount={200} />\n </Typography>\n )}\n\n {detailsPagePath && selectedFacetValue && (\n <Box sx={{ my: 2 }}>\n <Button\n variant={'contained'}\n href={detailsPagePath}\n color={'secondary'}\n sx={theme => ({\n [theme.breakpoints.down('sm')]: { width: '100%' },\n })}\n >\n Explore {selectedFacetValue}\n </Button>\n </Box>\n )}\n </FacetPlotsCardTitleContainer>\n\n {/* create a plot for every facet to be plotted */}\n {facetPlotDataArray.map((plotData, index) => {\n return (\n <Fragment key={index}>\n <FacetPlotsCardPlotContainer\n className={FACET_PLOTS_CARD_PLOT_CONTAINER_CLASSNAME}\n sx={{\n pt: index === 0 ? 5 : 0,\n gridRow: `plot${index}`,\n }}\n key={index}\n >\n {index != 0 && <Divider sx={{ mt: 2, mb: 4 }} />}\n <Box sx={{ minHeight: '130px' }}>\n <Box\n ref={plotContainerRef}\n sx={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n <Plot\n key={`${facetsToPlot![index]}-${\n plotContainerMeasurements?.width\n }`}\n layout={currentLayout}\n data={plotData?.data ?? []}\n style={getPlotStyle(\n plotContainerMeasurements?.width,\n plotType,\n maxPlotHeight,\n )}\n config={{ displayModeBar: false }}\n />\n </Box>\n <Box sx={{ mt: 4, width: '100%' }}>\n <FacetPlotLegendTable\n facetName={getColumnDisplayName(\n facetDataArray[index].columnName,\n )}\n labels={plotData?.labels}\n colors={plotData?.colors}\n isExpanded={false}\n linkToFullQuery={detailsPagePath}\n />\n </Box>\n </Box>\n </FacetPlotsCardPlotContainer>\n </Fragment>\n )\n })}\n </Paper>\n )\n}\n\nexport default function FacetPlotsCardWithSuspense(props: FacetPlotsCardProps) {\n return (\n <Suspense\n fallback={<LoadingCard numPlots={(props.facetsToPlot ?? []).length} />}\n >\n <FacetPlotsCard {...props} />\n </Suspense>\n )\n}\n"],"names":["layout","LoadingCard","props","numPlots","jsxs","Paper","FACET_PLOTS_CARD_CLASSNAME","FacetPlotsCardTitleContainer","FACET_PLOTS_CARD_TITLE_CONTAINER_CLASSNAME","jsx","Skeleton","SkeletonParagraph","Button","times","index","FacetPlotsCardPlotContainer","FACET_PLOTS_CARD_PLOT_CONTAINER_CLASSNAME","SkeletonTable","FacetPlotsCard","title","description","facetsToPlot","detailsPagePath","plotType","accessToken","useSynapseContext","queryMetadata","useSuspenseGetQueryMetadata","getColumnDisplayName","useQueryVisualizationContext","plotContainerMeasurements","plotContainerRef","useMeasure","facetDataArray","useMemo","getFacets","currentLayout","maxPlotHeight","facetPlotDataArray","useSuspenseQuery","getColumnType","facetToPlot","columnModel","item","extractPlotDataArray","selectedFacetValue","selectedFacet","facetValues","filteredFacetValues","facetValue","x","isShowingMultiplePlots","cardTitle","Typography","ShowMore","Box","theme","plotData","Fragment","Divider","Plot","getPlotStyle","FacetPlotLegendTable","FacetPlotsCardWithSuspense","Suspense"],"mappings":"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"}