synapse-react-client 4.0.19 → 4.0.21

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 (1619) hide show
  1. package/dist/SWC.index.d.ts +1 -1
  2. package/dist/SWC.index.js +1 -1
  3. package/dist/SWC.index.js.map +1 -1
  4. package/dist/aridhia-queries/aridhiaTokenExchange.js.map +1 -1
  5. package/dist/aridhia-queries/useGetAridhiaRequests.js.map +1 -1
  6. package/dist/assets/DefaultColorfulPortalCardBackground.js.map +1 -1
  7. package/dist/assets/GoogleIcon.js.map +1 -1
  8. package/dist/assets/GoogleIcon24.js.map +1 -1
  9. package/dist/assets/homepage/BlinkingLiveIcon.d.ts +1 -1
  10. package/dist/assets/homepage/BlinkingLiveIcon.js.map +1 -1
  11. package/dist/assets/homepage/aacr.js.map +1 -1
  12. package/dist/assets/homepage/cri.js.map +1 -1
  13. package/dist/assets/homepage/ctf.js.map +1 -1
  14. package/dist/assets/homepage/egress.js.map +1 -1
  15. package/dist/assets/homepage/facebook.js.map +1 -1
  16. package/dist/assets/homepage/fisma.js.map +1 -1
  17. package/dist/assets/homepage/gff.js.map +1 -1
  18. package/dist/assets/homepage/github.js.map +1 -1
  19. package/dist/assets/homepage/gray.js.map +1 -1
  20. package/dist/assets/homepage/hipaa-compliant.js.map +1 -1
  21. package/dist/assets/homepage/instagram.js.map +1 -1
  22. package/dist/assets/homepage/linkedin.js.map +1 -1
  23. package/dist/assets/homepage/ml-commons.js.map +1 -1
  24. package/dist/assets/homepage/nih-aging.js.map +1 -1
  25. package/dist/assets/homepage/nih-heart.js.map +1 -1
  26. package/dist/assets/homepage/nih-nci.js.map +1 -1
  27. package/dist/assets/homepage/nih-nimh.js.map +1 -1
  28. package/dist/assets/homepage/ntap.js.map +1 -1
  29. package/dist/assets/homepage/plan-item.js.map +1 -1
  30. package/dist/assets/homepage/powered-by-synapse-feature.js.map +1 -1
  31. package/dist/assets/homepage/precision-governance-feature.js.map +1 -1
  32. package/dist/assets/homepage/python.js.map +1 -1
  33. package/dist/assets/homepage/r.js.map +1 -1
  34. package/dist/assets/homepage/research-credit-feature.js.map +1 -1
  35. package/dist/assets/homepage/seamless-integration-feature.js.map +1 -1
  36. package/dist/assets/homepage/sloan.js.map +1 -1
  37. package/dist/assets/homepage/twitter.js.map +1 -1
  38. package/dist/assets/homepage/users.js.map +1 -1
  39. package/dist/assets/homepage/youtube.js.map +1 -1
  40. package/dist/assets/icons/AccessDataAnywhere.js.map +1 -1
  41. package/dist/assets/icons/AccessPending.js.map +1 -1
  42. package/dist/assets/icons/AccessPendingCloud.js.map +1 -1
  43. package/dist/assets/icons/AddAd.js.map +1 -1
  44. package/dist/assets/icons/AddToList.js.map +1 -1
  45. package/dist/assets/icons/Alert.js.map +1 -1
  46. package/dist/assets/icons/Arrow.js.map +1 -1
  47. package/dist/assets/icons/AwardScroll.js.map +1 -1
  48. package/dist/assets/icons/Baseline.js.map +1 -1
  49. package/dist/assets/icons/Cavatica.js.map +1 -1
  50. package/dist/assets/icons/CertifiedUser.js.map +1 -1
  51. package/dist/assets/icons/Challenge.js.map +1 -1
  52. package/dist/assets/icons/Checkbox/Checked.js.map +1 -1
  53. package/dist/assets/icons/Checkbox/Checked2.js.map +1 -1
  54. package/dist/assets/icons/Checkbox/Indeterminate.js.map +1 -1
  55. package/dist/assets/icons/Checkbox/Indeterminate2.js.map +1 -1
  56. package/dist/assets/icons/Checkbox/Unchecked.js.map +1 -1
  57. package/dist/assets/icons/Checkbox/Unchecked2.js.map +1 -1
  58. package/dist/assets/icons/ClappingHands.js.map +1 -1
  59. package/dist/assets/icons/CloudWarning.js.map +1 -1
  60. package/dist/assets/icons/CommunicateFindings.js.map +1 -1
  61. package/dist/assets/icons/CreateVersion.js.map +1 -1
  62. package/dist/assets/icons/DNA_Two.js.map +1 -1
  63. package/dist/assets/icons/Data2.js.map +1 -1
  64. package/dist/assets/icons/DoubleQuotes.js.map +1 -1
  65. package/dist/assets/icons/EmailAddressAdornment.js.map +1 -1
  66. package/dist/assets/icons/FileWithShield.js.map +1 -1
  67. package/dist/assets/icons/FileWithShield2.js.map +1 -1
  68. package/dist/assets/icons/FrontHand.js.map +1 -1
  69. package/dist/assets/icons/HandWithMoney.js.map +1 -1
  70. package/dist/assets/icons/IconCopy.js.map +1 -1
  71. package/dist/assets/icons/IconMinus.js.map +1 -1
  72. package/dist/assets/icons/IconPlus.js.map +1 -1
  73. package/dist/assets/icons/Java.js.map +1 -1
  74. package/dist/assets/icons/MintDoi.js.map +1 -1
  75. package/dist/assets/icons/MultiFile.js.map +1 -1
  76. package/dist/assets/icons/MultiFile2.js.map +1 -1
  77. package/dist/assets/icons/NoData.js.map +1 -1
  78. package/dist/assets/icons/NoSearchResults.js.map +1 -1
  79. package/dist/assets/icons/ORCIDIcon.js.map +1 -1
  80. package/dist/assets/icons/OpenBook.js.map +1 -1
  81. package/dist/assets/icons/Podium.js.map +1 -1
  82. package/dist/assets/icons/Python.js.map +1 -1
  83. package/dist/assets/icons/QueryStructuredData.js.map +1 -1
  84. package/dist/assets/icons/RLogo.js.map +1 -1
  85. package/dist/assets/icons/RecordProvenance.js.map +1 -1
  86. package/dist/assets/icons/RosetteRibbon.js.map +1 -1
  87. package/dist/assets/icons/SageFullLogo.js.map +1 -1
  88. package/dist/assets/icons/SearchImage.js.map +1 -1
  89. package/dist/assets/icons/ShareYourResearch.js.map +1 -1
  90. package/dist/assets/icons/Sort.js.map +1 -1
  91. package/dist/assets/icons/StarTrophy.js.map +1 -1
  92. package/dist/assets/icons/SynapseFullLogo.js.map +1 -1
  93. package/dist/assets/icons/SynapseIconWhite.js.map +1 -1
  94. package/dist/assets/icons/SynapseLogoName.js.map +1 -1
  95. package/dist/assets/icons/TasksIcon.js.map +1 -1
  96. package/dist/assets/icons/Terminal.js.map +1 -1
  97. package/dist/assets/icons/ThreeStars.js.map +1 -1
  98. package/dist/assets/icons/UnpackagableFile.js.map +1 -1
  99. package/dist/assets/icons/UnpackagableFile2.js.map +1 -1
  100. package/dist/assets/icons/ValidatedProfile.js.map +1 -1
  101. package/dist/assets/icons/account-certified.js.map +1 -1
  102. package/dist/assets/icons/account-enabled-mfa.js.map +1 -1
  103. package/dist/assets/icons/account-validated.js.map +1 -1
  104. package/dist/assets/icons/bioChemicalPhysical.js.map +1 -1
  105. package/dist/assets/icons/chart2.js.map +1 -1
  106. package/dist/assets/icons/columns.js.map +1 -1
  107. package/dist/assets/icons/columnsDarkTheme.js.map +1 -1
  108. package/dist/assets/icons/computationalTool.js.map +1 -1
  109. package/dist/assets/icons/dataReuse.js.map +1 -1
  110. package/dist/assets/icons/emailAddressAdornment2.js.map +1 -1
  111. package/dist/assets/icons/emailWithNotification.js.map +1 -1
  112. package/dist/assets/icons/error_page/maintenance.js.map +1 -1
  113. package/dist/assets/icons/error_page/no-access.js.map +1 -1
  114. package/dist/assets/icons/error_page/unavailable.js.map +1 -1
  115. package/dist/assets/icons/file.js.map +1 -1
  116. package/dist/assets/icons/inSilicoModel.js.map +1 -1
  117. package/dist/assets/icons/institution.js.map +1 -1
  118. package/dist/assets/icons/json-form-tool-no-submissions.js.map +1 -1
  119. package/dist/assets/icons/modelSystem.js.map +1 -1
  120. package/dist/assets/icons/mouse.js.map +1 -1
  121. package/dist/assets/icons/organizations.js.map +1 -1
  122. package/dist/assets/icons/person.js.map +1 -1
  123. package/dist/assets/icons/spatialProfiling.js.map +1 -1
  124. package/dist/assets/icons/standardDataModel.js.map +1 -1
  125. package/dist/assets/icons/study-active.js.map +1 -1
  126. package/dist/assets/icons/study-complete.js.map +1 -1
  127. package/dist/assets/icons/subscribe_plus.js.map +1 -1
  128. package/dist/assets/icons/synapse-logo.js.map +1 -1
  129. package/dist/assets/icons/terms/CheckIcon.js.map +1 -1
  130. package/dist/assets/icons/translational.js.map +1 -1
  131. package/dist/assets/icons/tree_horizontal.js.map +1 -1
  132. package/dist/assets/illustrations/acknowledgement_statements_illustration.js.map +1 -1
  133. package/dist/assets/illustrations/challenges_illustration.js.map +1 -1
  134. package/dist/assets/illustrations/cohort_builder_illustration.js.map +1 -1
  135. package/dist/assets/illustrations/data_access_management_illustration.js.map +1 -1
  136. package/dist/assets/illustrations/datasets_illustration.js.map +1 -1
  137. package/dist/assets/illustrations/diagonalLinePattern.js.map +1 -1
  138. package/dist/assets/illustrations/discussions_illustration.js.map +1 -1
  139. package/dist/assets/illustrations/docker_illustration.js.map +1 -1
  140. package/dist/assets/illustrations/donation_illustration.js.map +1 -1
  141. package/dist/assets/illustrations/favorites_illustration.js.map +1 -1
  142. package/dist/assets/illustrations/files_illustration.js.map +1 -1
  143. package/dist/assets/illustrations/following_illustration.js.map +1 -1
  144. package/dist/assets/illustrations/index.js.map +1 -1
  145. package/dist/assets/illustrations/left_dot_blob_dark_illustration.js.map +1 -1
  146. package/dist/assets/illustrations/left_dot_blob_illustration.js.map +1 -1
  147. package/dist/assets/illustrations/projects_illustration.js.map +1 -1
  148. package/dist/assets/illustrations/right_dot_blob_dark_illustration.js.map +1 -1
  149. package/dist/assets/illustrations/right_dot_blob_illustration.js.map +1 -1
  150. package/dist/assets/illustrations/tables_illustration.js.map +1 -1
  151. package/dist/assets/illustrations/teams_illustration.js.map +1 -1
  152. package/dist/assets/illustrations/trash_can_illustration.js.map +1 -1
  153. package/dist/assets/illustrations/underconstruction_illustration.js.map +1 -1
  154. package/dist/assets/illustrations/wikis_illustration.js.map +1 -1
  155. package/dist/assets/logos/other/ad-workbench-logo.js.map +1 -1
  156. package/dist/assets/logos/other/cavatica-logo.js.map +1 -1
  157. package/dist/assets/logos/other/pluto-logo.js.map +1 -1
  158. package/dist/assets/logos/other/terra-logo.js.map +1 -1
  159. package/dist/assets/mui_components/AccessManagement.js.map +1 -1
  160. package/dist/assets/mui_components/AccountCertified.js.map +1 -1
  161. package/dist/assets/mui_components/AccountRegistered.js.map +1 -1
  162. package/dist/assets/mui_components/AccountValidated.js.map +1 -1
  163. package/dist/assets/mui_components/ActionKey.js.map +1 -1
  164. package/dist/assets/mui_components/BioChemicalPhysical.js.map +1 -1
  165. package/dist/assets/mui_components/Chromatin.js.map +1 -1
  166. package/dist/assets/mui_components/Clinical.js.map +1 -1
  167. package/dist/assets/mui_components/ComputationalTool.js.map +1 -1
  168. package/dist/assets/mui_components/Data.js.map +1 -1
  169. package/dist/assets/mui_components/DataLocked.js.map +1 -1
  170. package/dist/assets/mui_components/DataReuse.js.map +1 -1
  171. package/dist/assets/mui_components/Dataset.js.map +1 -1
  172. package/dist/assets/mui_components/DatasetCollection.js.map +1 -1
  173. package/dist/assets/mui_components/Docker.js.map +1 -1
  174. package/dist/assets/mui_components/GeneExpression.js.map +1 -1
  175. package/dist/assets/mui_components/GeneVariants.js.map +1 -1
  176. package/dist/assets/mui_components/HelpChatBubble.js.map +1 -1
  177. package/dist/assets/mui_components/Imaging.js.map +1 -1
  178. package/dist/assets/mui_components/InSilicoModel.js.map +1 -1
  179. package/dist/assets/mui_components/Kinomics.js.map +1 -1
  180. package/dist/assets/mui_components/LineGraph.js.map +1 -1
  181. package/dist/assets/mui_components/ModelSystem.js.map +1 -1
  182. package/dist/assets/mui_components/Other.js.map +1 -1
  183. package/dist/assets/mui_components/PackagableFile.js.map +1 -1
  184. package/dist/assets/mui_components/PackagableFile2.js.map +1 -1
  185. package/dist/assets/mui_components/Proteomics.js.map +1 -1
  186. package/dist/assets/mui_components/Rat.js.map +1 -1
  187. package/dist/assets/mui_components/SpatialProfiling.js.map +1 -1
  188. package/dist/assets/sustainability/darkDialPosition1.js.map +1 -1
  189. package/dist/assets/sustainability/darkDialPosition2.js.map +1 -1
  190. package/dist/assets/sustainability/darkDialPosition3.js.map +1 -1
  191. package/dist/assets/sustainability/darkDialPosition4.js.map +1 -1
  192. package/dist/assets/sustainability/dialPosition1.js.map +1 -1
  193. package/dist/assets/sustainability/dialPosition2.js.map +1 -1
  194. package/dist/assets/sustainability/dialPosition3.js.map +1 -1
  195. package/dist/assets/sustainability/dialPosition4.js.map +1 -1
  196. package/dist/assets/themed_icons/Active.js.map +1 -1
  197. package/dist/assets/themed_icons/Chart.js.map +1 -1
  198. package/dist/assets/themed_icons/Close.js.map +1 -1
  199. package/dist/assets/themed_icons/Collapse.js.map +1 -1
  200. package/dist/assets/themed_icons/Columns.js.map +1 -1
  201. package/dist/assets/themed_icons/ColumnsDark.js.map +1 -1
  202. package/dist/assets/themed_icons/Database.js.map +1 -1
  203. package/dist/assets/themed_icons/Download.js.map +1 -1
  204. package/dist/assets/themed_icons/Expand.js.map +1 -1
  205. package/dist/assets/themed_icons/Explore.js.map +1 -1
  206. package/dist/assets/themed_icons/ExternalLink.js.map +1 -1
  207. package/dist/assets/themed_icons/Filter.js.map +1 -1
  208. package/dist/assets/themed_icons/Program.js.map +1 -1
  209. package/dist/assets/themed_icons/Project.js.map +1 -1
  210. package/dist/assets/themed_icons/Publication.js.map +1 -1
  211. package/dist/assets/themed_icons/Search.js.map +1 -1
  212. package/dist/assets/themed_icons/Settings.js.map +1 -1
  213. package/dist/assets/themed_icons/SortDown.js.map +1 -1
  214. package/dist/assets/themed_icons/SortUp.js.map +1 -1
  215. package/dist/assets/themed_icons/SqlEditorIcon.js.map +1 -1
  216. package/dist/assets/themed_icons/Study.js.map +1 -1
  217. package/dist/assets/themed_icons/ToolClinical.js.map +1 -1
  218. package/dist/assets/themed_icons/ToolComputational.js.map +1 -1
  219. package/dist/assets/themed_icons/ToolExperimental.js.map +1 -1
  220. package/dist/assets/themed_icons/VerticalDots.js.map +1 -1
  221. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js.map +1 -1
  222. package/dist/components/AccessRequirement/EntityActionsRequired.js.map +1 -1
  223. package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.js.map +1 -1
  224. package/dist/components/AccessRequirementAclEditor/AccessRequirementAclEditor.js.map +1 -1
  225. package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js +10 -11
  226. package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js.map +1 -1
  227. package/dist/components/AccessRequirementList/AccessRequirementList.js +73 -76
  228. package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
  229. package/dist/components/AccessRequirementList/AccessRequirementListItem.js.map +1 -1
  230. package/dist/components/AccessRequirementList/AccessRequirementListUtils.js.map +1 -1
  231. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/CancelRequestDataAccess.js.map +1 -1
  232. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js.map +1 -1
  233. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js.map +1 -1
  234. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DocumentTemplate.js.map +1 -1
  235. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.js.map +1 -1
  236. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItem.js.map +1 -1
  237. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItemView.js.map +1 -1
  238. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestDataAccessSuccess.js.map +1 -1
  239. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js.map +1 -1
  240. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/UploadDocumentField.js.map +1 -1
  241. package/dist/components/AccessRequirementList/RequirementItem/AuthenticatedRequirement.js.map +1 -1
  242. package/dist/components/AccessRequirementList/RequirementItem/CertificationRequirement.js.map +1 -1
  243. package/dist/components/AccessRequirementList/RequirementItem/LockAccessRequirementItem.js.map +1 -1
  244. package/dist/components/AccessRequirementList/RequirementItem/RequirementItem.js.map +1 -1
  245. package/dist/components/AccessRequirementList/RequirementItem/SelfSignAccessRequirementItem.js.map +1 -1
  246. package/dist/components/AccessRequirementList/RequirementItem/TwoFactorAuthEnabledRequirement.js.map +1 -1
  247. package/dist/components/AccessRequirementList/RequirementItem/UnmanagedACTAccessRequirementItem.js.map +1 -1
  248. package/dist/components/AccessRequirementList/RequirementItem/ValidationRequirement.js.map +1 -1
  249. package/dist/components/AccessRequirementRelatedProjectsList/AccessRequirementRelatedProjectsList.js.map +1 -1
  250. package/dist/components/AccessTokenPage/AccessTokenCard/AccessTokenCard.js.map +1 -1
  251. package/dist/components/AccessTokenPage/AccessTokenPage.js.map +1 -1
  252. package/dist/components/AccessTokenPage/CreateAccessTokenModal.js.map +1 -1
  253. package/dist/components/AccountLevelBadge/AccountLevelBadge.js.map +1 -1
  254. package/dist/components/AccountLevelBadges/AccountLevelBadges.js.map +1 -1
  255. package/dist/components/AccountLevelBadges/useRevokeCertificationUI.js.map +1 -1
  256. package/dist/components/AcknowledgementsPage/AcknowledgementsDialog.js.map +1 -1
  257. package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js.map +1 -1
  258. package/dist/components/AcknowledgementsPage/StudyAcknowledgement.js.map +1 -1
  259. package/dist/components/AcknowledgementsPage/StudyAcknowledgements.js.map +1 -1
  260. package/dist/components/AclEditor/AclEditor.js.map +1 -1
  261. package/dist/components/AclEditor/AclEditor.test-utils.js.map +1 -1
  262. package/dist/components/AclEditor/AclEditorSkeleton.js.map +1 -1
  263. package/dist/components/AclEditor/PermissionLevelMenu.js.map +1 -1
  264. package/dist/components/AclEditor/ReadOnlyPermissionLevel.js.map +1 -1
  265. package/dist/components/AclEditor/ResourceAccessAndUserGroupHeader.js +2 -4
  266. package/dist/components/AclEditor/ResourceAccessAndUserGroupHeader.js.map +1 -1
  267. package/dist/components/AclEditor/ResourceAccessItem.js.map +1 -1
  268. package/dist/components/AclEditor/useSortResourceAccessList.js.map +1 -1
  269. package/dist/components/AclEditor/useUpdateAcl.js.map +1 -1
  270. package/dist/components/AdaptiveTwoColumnLayout/AdaptiveTwoColumnLayout.js.map +1 -1
  271. package/dist/components/AddToDownloadListV2.js.map +1 -1
  272. package/dist/components/Aridhia/AridhiaAccessStatus.js.map +1 -1
  273. package/dist/components/Aridhia/aridhiaAccessStatusUtils.js.map +1 -1
  274. package/dist/components/Authentication/AuthenticationMethodSelection.js.map +1 -1
  275. package/dist/components/Authentication/LastLoginInfo.js.map +1 -1
  276. package/dist/components/Authentication/LoginFlowBackButton.js.map +1 -1
  277. package/dist/components/Authentication/LoginForm.js.map +1 -1
  278. package/dist/components/Authentication/LoginMethod.js.map +1 -1
  279. package/dist/components/Authentication/LoginMethodButton.js.map +1 -1
  280. package/dist/components/Authentication/Logout.js.map +1 -1
  281. package/dist/components/Authentication/OneTimePasswordForm.js.map +1 -1
  282. package/dist/components/Authentication/PasswordField.js.map +1 -1
  283. package/dist/components/Authentication/RecoveryCodeForm.js.map +1 -1
  284. package/dist/components/Authentication/RecoveryCodeGrid.js.map +1 -1
  285. package/dist/components/Authentication/RegenerateBackupCodesWarning.js.map +1 -1
  286. package/dist/components/Authentication/Reset2FAWarning.js.map +1 -1
  287. package/dist/components/Authentication/StandaloneLoginForm.js.map +1 -1
  288. package/dist/components/Authentication/TOTPForm.js.map +1 -1
  289. package/dist/components/Authentication/TwoFactorAuthSettingsPanel.js.map +1 -1
  290. package/dist/components/Authentication/TwoFactorBackupCodes.js.map +1 -1
  291. package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
  292. package/dist/components/Authentication/TwoFactorSecretDialog.js.map +1 -1
  293. package/dist/components/Authentication/UsernamePasswordForm.js.map +1 -1
  294. package/dist/components/BasePortalCard/BasePortalCard.js.map +1 -1
  295. package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.js.map +1 -1
  296. package/dist/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
  297. package/dist/components/CTASectionWrapper/CTASectionWrapper.js.map +1 -1
  298. package/dist/components/CannedRejectionDialog/CannedRejectionDialog.js.map +1 -1
  299. package/dist/components/CardContainer/CardConfiguration.d.ts +2 -0
  300. package/dist/components/CardContainer/CardConfiguration.d.ts.map +1 -1
  301. package/dist/components/CardContainer/CardContainer.d.ts.map +1 -1
  302. package/dist/components/CardContainer/CardContainer.js +3 -3
  303. package/dist/components/CardContainer/CardContainer.js.map +1 -1
  304. package/dist/components/CardContainerLogic/CardContainerLogic.d.ts +1 -0
  305. package/dist/components/CardContainerLogic/CardContainerLogic.d.ts.map +1 -1
  306. package/dist/components/CardContainerLogic/CardContainerLogic.js.map +1 -1
  307. package/dist/components/CardDeck/CardDeck.Desktop.js.map +1 -1
  308. package/dist/components/CardDeck/CardDeck.Mobile.js.map +1 -1
  309. package/dist/components/CardDeck/CardDeck.js.map +1 -1
  310. package/dist/components/CardDeck/TableQueryCardDeck.js.map +1 -1
  311. package/dist/components/CardGridWithLinks/CardGridWithLinks.js.map +1 -1
  312. package/dist/components/CertificationQuiz/CertificationAnswer.js.map +1 -1
  313. package/dist/components/CertificationQuiz/CertificationQuiz.js.map +1 -1
  314. package/dist/components/ChallengeDataDownload/ChallengeDataDownload.js.map +1 -1
  315. package/dist/components/ChallengeDetailPage/ChallengeDetailPage.js.map +1 -1
  316. package/dist/components/ChallengeRegisterButton/ChallengeRegisterButton.js.map +1 -1
  317. package/dist/components/ChallengeRequirementsModal/ChallengeRequirementsModal.js.map +1 -1
  318. package/dist/components/ChallengeSubmission/AddExternalRepo.js.map +1 -1
  319. package/dist/components/ChallengeSubmission/AvailableEvaluationQueueList.js.map +1 -1
  320. package/dist/components/ChallengeSubmission/ChallengeSubmission.js.map +1 -1
  321. package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js +62 -64
  322. package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js.map +1 -1
  323. package/dist/components/ChallengeSubmission/EvaluationQueueCurrentRoundInfo.js.map +1 -1
  324. package/dist/components/ChallengeSubmission/EvaluationQueueList.js.map +1 -1
  325. package/dist/components/ChallengeSubmission/SubmissionCommitList.js.map +1 -1
  326. package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js.map +1 -1
  327. package/dist/components/ChallengeTeamWizard/ChallengeTeamSearch.js.map +1 -1
  328. package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.js.map +1 -1
  329. package/dist/components/ChallengeTeamWizard/ChallengeTeamWizard.js +96 -102
  330. package/dist/components/ChallengeTeamWizard/ChallengeTeamWizard.js.map +1 -1
  331. package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js.map +1 -1
  332. package/dist/components/ChallengeTeamWizard/MembershipRequestForm.js.map +1 -1
  333. package/dist/components/ChallengeTeamWizard/OpenMembershipInvitation.js.map +1 -1
  334. package/dist/components/ChallengeTeamWizard/RegistrationSuccessful.js.map +1 -1
  335. package/dist/components/ChallengeTeamWizard/SelectChallengeTeam.js.map +1 -1
  336. package/dist/components/ChallengeTeamWizard/useCreateAndRegisterChallengeTeam.js.map +1 -1
  337. package/dist/components/ChangePassword/ChangePassword.js.map +1 -1
  338. package/dist/components/ChangePassword/ChangePasswordWithToken.js.map +1 -1
  339. package/dist/components/ChangePassword/useChangePasswordFormState.js.map +1 -1
  340. package/dist/components/CitationPopover/CitationPopover.js.map +1 -1
  341. package/dist/components/CitationPopover/CitationPopoverContent.js.map +1 -1
  342. package/dist/components/CitationPopover/CitationPopoverUtils.js.map +1 -1
  343. package/dist/components/CitationPopover/useCitation.js.map +1 -1
  344. package/dist/components/ColorGradient/ColorGradient.js.map +1 -1
  345. package/dist/components/ColoredBulletListItem/ColoredBulletListItem.js.map +1 -1
  346. package/dist/components/ColumnFilter/ColumnFilter.js.map +1 -1
  347. package/dist/components/ComponentCollapse.js.map +1 -1
  348. package/dist/components/ConfirmationDialog/ConfirmationDialog.js.map +1 -1
  349. package/dist/components/CookiesNotification/CookiePreferencesDialog.js.map +1 -1
  350. package/dist/components/CookiesNotification/CookiesNotification.d.ts.map +1 -1
  351. package/dist/components/CookiesNotification/CookiesNotification.js +9 -9
  352. package/dist/components/CookiesNotification/CookiesNotification.js.map +1 -1
  353. package/dist/components/CopyToClipboardIcon.js.map +1 -1
  354. package/dist/components/CopyToClipboardInput/CopyToClipboardInput.js.map +1 -1
  355. package/dist/components/CopyToClipboardString/CopyToClipboardString.js.map +1 -1
  356. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js.map +1 -1
  357. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizardUtils.js.map +1 -1
  358. package/dist/components/CreateProjectModal/CreateProjectModal.js.map +1 -1
  359. package/dist/components/CreateProjectModal/ProjectVisibilityRadioGroup.js.map +1 -1
  360. package/dist/components/CreateTableViewWizard/CreateTableViewWizard.js.map +1 -1
  361. package/dist/components/CreateTableViewWizard/CreateTableViewWizardUtils.js.map +1 -1
  362. package/dist/components/CreateTableViewWizard/TableNameForm.js.map +1 -1
  363. package/dist/components/CreateTableViewWizard/TableTypeSelection.js.map +1 -1
  364. package/dist/components/CreateTableViewWizard/ViewTypeSelection.js.map +1 -1
  365. package/dist/components/CrispChat/CrispChat.js.map +1 -1
  366. package/dist/components/DataExplorer/DataExplorer.css +1 -1
  367. package/dist/components/DataExplorer/DataExplorer.js +28 -31
  368. package/dist/components/DataExplorer/DataExplorer.js.map +1 -1
  369. package/dist/components/DataExplorer/DataExplorer.module.js +16 -16
  370. package/dist/components/DataExplorer/DataExplorer.module.js.map +1 -1
  371. package/dist/components/DataExplorer/DataExplorer.module.scss +26 -6
  372. package/dist/components/DataGrid/DataGrid.js +72 -72
  373. package/dist/components/DataGrid/DataGrid.js.map +1 -1
  374. package/dist/components/DataGrid/DataGridTypes.js.map +1 -1
  375. package/dist/components/DataGrid/DataGridWebSocket.d.ts +2 -0
  376. package/dist/components/DataGrid/DataGridWebSocket.d.ts.map +1 -1
  377. package/dist/components/DataGrid/DataGridWebSocket.js +9 -10
  378. package/dist/components/DataGrid/DataGridWebSocket.js.map +1 -1
  379. package/dist/components/DataGrid/MergeGridWithSourceTableButton.js.map +1 -1
  380. package/dist/components/DataGrid/StartGridSession.js.map +1 -1
  381. package/dist/components/DataGrid/SynapseGrid.d.ts +3 -1
  382. package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
  383. package/dist/components/DataGrid/SynapseGrid.js +219 -211
  384. package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
  385. package/dist/components/DataGrid/columns/AutocompleteColumn.js.map +1 -1
  386. package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.js.map +1 -1
  387. package/dist/components/DataGrid/columns/DateTimeColumn.js.map +1 -1
  388. package/dist/components/DataGrid/columns/GridAutocompleteChip.js.map +1 -1
  389. package/dist/components/DataGrid/columns/useGridAutocompleteState.js.map +1 -1
  390. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.d.ts +5 -3
  391. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.d.ts.map +1 -1
  392. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js +46 -47
  393. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js.map +1 -1
  394. package/dist/components/DataGrid/components/ExportCsvFromGridButton.js.map +1 -1
  395. package/dist/components/DataGrid/components/GridMenuButton/GridMenuButton.js.map +1 -1
  396. package/dist/components/DataGrid/components/GridSessionSelectionField.js.map +1 -1
  397. package/dist/components/DataGrid/components/UploadCsvToGridButton.js.map +1 -1
  398. package/dist/components/DataGrid/components/UploadCsvToGridDialog.js.map +1 -1
  399. package/dist/components/DataGrid/components/ValidationAlert.js.map +1 -1
  400. package/dist/components/DataGrid/components/contextMenu.js.map +1 -1
  401. package/dist/components/DataGrid/hooks/useColumnResizeHandles.d.ts.map +1 -1
  402. package/dist/components/DataGrid/hooks/useColumnResizeHandles.js +3 -1
  403. package/dist/components/DataGrid/hooks/useColumnResizeHandles.js.map +1 -1
  404. package/dist/components/DataGrid/hooks/useExportDataGridToCsv.js.map +1 -1
  405. package/dist/components/DataGrid/hooks/useGetSchemaForGrid.js.map +1 -1
  406. package/dist/components/DataGrid/hooks/useGridReplicaUsers.js.map +1 -1
  407. package/dist/components/DataGrid/hooks/useGridUndoRedo.js.map +1 -1
  408. package/dist/components/DataGrid/hooks/useRemoteSelections.js.map +1 -1
  409. package/dist/components/DataGrid/hooks/useStack.js.map +1 -1
  410. package/dist/components/DataGrid/useCRDTModelView.js.map +1 -1
  411. package/dist/components/DataGrid/useDataGridWebsocket.d.ts +2 -0
  412. package/dist/components/DataGrid/useDataGridWebsocket.d.ts.map +1 -1
  413. package/dist/components/DataGrid/useDataGridWebsocket.js +12 -2
  414. package/dist/components/DataGrid/useDataGridWebsocket.js.map +1 -1
  415. package/dist/components/DataGrid/useInitializeGridConnection.js.map +1 -1
  416. package/dist/components/DataGrid/useMergeGridWithRecordSet.js.map +1 -1
  417. package/dist/components/DataGrid/useMergeGridWithSource.js.map +1 -1
  418. package/dist/components/DataGrid/useMergeGridWithTable.js.map +1 -1
  419. package/dist/components/DataGrid/utils/DataGridUtils.js.map +1 -1
  420. package/dist/components/DataGrid/utils/MessageCounter.js.map +1 -1
  421. package/dist/components/DataGrid/utils/applyModelChange.js.map +1 -1
  422. package/dist/components/DataGrid/utils/calculateColumnWidth.js.map +1 -1
  423. package/dist/components/DataGrid/utils/columnFactory.d.ts.map +1 -1
  424. package/dist/components/DataGrid/utils/columnFactory.js +1 -0
  425. package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
  426. package/dist/components/DataGrid/utils/computeReplicaSelectionModel.js.map +1 -1
  427. package/dist/components/DataGrid/utils/convertActionToModelChange.js.map +1 -1
  428. package/dist/components/DataGrid/utils/createTestModel.js.map +1 -1
  429. package/dist/components/DataGrid/utils/enrichRowsWithChangeInfo.js.map +1 -1
  430. package/dist/components/DataGrid/utils/extractColumnValidationMessages.js.map +1 -1
  431. package/dist/components/DataGrid/utils/getCellAuthorSid.js.map +1 -1
  432. package/dist/components/DataGrid/utils/getCellClassName.js.map +1 -1
  433. package/dist/components/DataGrid/utils/getChangeTooltipText.js.map +1 -1
  434. package/dist/components/DataGrid/utils/getEmptyValue.js.map +1 -1
  435. package/dist/components/DataGrid/utils/getReplicaCategory.js.map +1 -1
  436. package/dist/components/DataGrid/utils/isValidationUpToDateForRow.js.map +1 -1
  437. package/dist/components/DataGrid/utils/json-rx/JsonRx.js.map +1 -1
  438. package/dist/components/DataGrid/utils/json-rx/JsonRxMessage.js.map +1 -1
  439. package/dist/components/DataGrid/utils/json-rx/JsonRxNotification.js.map +1 -1
  440. package/dist/components/DataGrid/utils/json-rx/JsonRxRequest.js.map +1 -1
  441. package/dist/components/DataGrid/utils/json-rx/JsonRxRequestComplete.js.map +1 -1
  442. package/dist/components/DataGrid/utils/json-rx/JsonRxResponse.js.map +1 -1
  443. package/dist/components/DataGrid/utils/json-rx/JsonRxResponseComplete.js.map +1 -1
  444. package/dist/components/DataGrid/utils/logicalTimestampToString.js.map +1 -1
  445. package/dist/components/DataGrid/utils/mapOperationsToModelChanges.js.map +1 -1
  446. package/dist/components/DataGrid/utils/modelColsToGrid.js.map +1 -1
  447. package/dist/components/DataGrid/utils/modelRowsToGrid.js.map +1 -1
  448. package/dist/components/DataGrid/utils/parseFreeTextUsingJsonSchemaType.js.map +1 -1
  449. package/dist/components/DataGrid/utils/replicaSelectionToGridSelection.js.map +1 -1
  450. package/dist/components/DataGrid/utils/schemaAwarePasteValue.js.map +1 -1
  451. package/dist/components/DataGrid/utils/splitPatch.js.map +1 -1
  452. package/dist/components/DatasetJsonLdScript.js.map +1 -1
  453. package/dist/components/DateTimePicker/DateTimePicker.js.map +1 -1
  454. package/dist/components/Dialog/ConfirmCloseWithoutSavingDialog.js.map +1 -1
  455. package/dist/components/DialogBase.js.map +1 -1
  456. package/dist/components/DirectDownload/DirectDownload.js.map +1 -1
  457. package/dist/components/DirectDownload/FileEntityDirectDownload.js.map +1 -1
  458. package/dist/components/DirectDownloadButton.js.map +1 -1
  459. package/dist/components/DownloadCart/ActionRequiredCard/ActionRequiredCard.js.map +1 -1
  460. package/dist/components/DownloadCart/ActionRequiredListItem.js.map +1 -1
  461. package/dist/components/DownloadCart/AvailableForDownloadTable.js.map +1 -1
  462. package/dist/components/DownloadCart/CreatePackageV2.js.map +1 -1
  463. package/dist/components/DownloadCart/DirectProgrammaticDownload.js.map +1 -1
  464. package/dist/components/DownloadCart/DownloadCartPage.js.map +1 -1
  465. package/dist/components/DownloadCart/DownloadDetails.js.map +1 -1
  466. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js.map +1 -1
  467. package/dist/components/DownloadCart/DownloadListActionsRequired.js.map +1 -1
  468. package/dist/components/DownloadCart/DownloadListStats.js.map +1 -1
  469. package/dist/components/DownloadCart/DownloadListTable.js.map +1 -1
  470. package/dist/components/DownloadCart/EnableTwoFaRequirementCard.js.map +1 -1
  471. package/dist/components/DownloadCart/MeetAccessRequirementCard.js.map +1 -1
  472. package/dist/components/DownloadCart/RequestDownloadCard.js.map +1 -1
  473. package/dist/components/DownloadCart/ShowDownloadV2.js.map +1 -1
  474. package/dist/components/DownloadCart/TableQueryActionsRequired.js.map +1 -1
  475. package/dist/components/DownloadCart/fileNameUtils.js.map +1 -1
  476. package/dist/components/DraggableDialog/DraggableDialog.js.map +1 -1
  477. package/dist/components/DropdownSelect/DropdownSelect.js.map +1 -1
  478. package/dist/components/DynamicForm/DynamicForm.js.map +1 -1
  479. package/dist/components/DynamicForm/DynamicFormModal.js.map +1 -1
  480. package/dist/components/Ecosystem/EcosystemCard.js.map +1 -1
  481. package/dist/components/Ecosystem/EcosystemLayout.js.map +1 -1
  482. package/dist/components/Ecosystem/EcosystemSkeleton.js.map +1 -1
  483. package/dist/components/Ecosystem/TableQueryEcosystem.js.map +1 -1
  484. package/dist/components/EntityAclEditor/CreateOrDeleteLocalSharingSettingsButton.js.map +1 -1
  485. package/dist/components/EntityAclEditor/EntityAclEditor.js.map +1 -1
  486. package/dist/components/EntityAclEditor/EntityAclEditorModal.js.map +1 -1
  487. package/dist/components/EntityAclEditor/InheritanceMessage.js.map +1 -1
  488. package/dist/components/EntityAclEditor/OpenData.js.map +1 -1
  489. package/dist/components/EntityAclEditor/useNotifyNewACLUsers.js.map +1 -1
  490. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js +68 -70
  491. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js.map +1 -1
  492. package/dist/components/EntityCitation/EntityCitation.js.map +1 -1
  493. package/dist/components/EntityCitation/EntityCitationUtils.js.map +1 -1
  494. package/dist/components/EntityDownloadButton/EntityDownloadButton.js +32 -35
  495. package/dist/components/EntityDownloadButton/EntityDownloadButton.js.map +1 -1
  496. package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js.map +1 -1
  497. package/dist/components/EntityFinder/Breadcrumbs.js.map +1 -1
  498. package/dist/components/EntityFinder/EntityFinder.js +134 -136
  499. package/dist/components/EntityFinder/EntityFinder.js.map +1 -1
  500. package/dist/components/EntityFinder/EntityFinderModal.js.map +1 -1
  501. package/dist/components/EntityFinder/EntityIdTextField.js.map +1 -1
  502. package/dist/components/EntityFinder/VersionSelectionType.js.map +1 -1
  503. package/dist/components/EntityFinder/details/EntityDetailsList.js +20 -20
  504. package/dist/components/EntityFinder/details/EntityDetailsList.js.map +1 -1
  505. package/dist/components/EntityFinder/details/configurations/EntityChildrenDetails.js.map +1 -1
  506. package/dist/components/EntityFinder/details/configurations/FavoritesDetails.js.map +1 -1
  507. package/dist/components/EntityFinder/details/configurations/ProjectListDetails.js.map +1 -1
  508. package/dist/components/EntityFinder/details/configurations/ReferenceDetails.js.map +1 -1
  509. package/dist/components/EntityFinder/details/configurations/SearchDetails.js.map +1 -1
  510. package/dist/components/EntityFinder/details/view/DetailsView.js +67 -67
  511. package/dist/components/EntityFinder/details/view/DetailsView.js.map +1 -1
  512. package/dist/components/EntityFinder/details/view/VersionColumnHeader.js +1 -1
  513. package/dist/components/EntityFinder/details/view/VersionColumnHeader.js.map +1 -1
  514. package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js.map +1 -1
  515. package/dist/components/EntityFinder/details/view/table/CreatedOnCell.js.map +1 -1
  516. package/dist/components/EntityFinder/details/view/table/DateCell.js.map +1 -1
  517. package/dist/components/EntityFinder/details/view/table/EntityBadgeIconsCell.js.map +1 -1
  518. package/dist/components/EntityFinder/details/view/table/EntityFinderCheckboxCell.js.map +1 -1
  519. package/dist/components/EntityFinder/details/view/table/EntityFinderVersionCell.js.map +1 -1
  520. package/dist/components/EntityFinder/details/view/table/EntityNameCell.js.map +1 -1
  521. package/dist/components/EntityFinder/details/view/table/EntityTypeCell.js.map +1 -1
  522. package/dist/components/EntityFinder/details/view/table/FileEntityDirectDownloadCell.js.map +1 -1
  523. package/dist/components/EntityFinder/details/view/table/FileEntityMD5Cell.js.map +1 -1
  524. package/dist/components/EntityFinder/details/view/table/FileEntitySizeCell.js.map +1 -1
  525. package/dist/components/EntityFinder/details/view/table/ModifiedByCell.js.map +1 -1
  526. package/dist/components/EntityFinder/details/view/table/ModifiedOnCell.js.map +1 -1
  527. package/dist/components/EntityFinder/details/view/table/ParentProjectCell.js.map +1 -1
  528. package/dist/components/EntityFinder/details/view/table/UserBadgeCell.js.map +1 -1
  529. package/dist/components/EntityFinder/tree/EntityTree.js +80 -80
  530. package/dist/components/EntityFinder/tree/EntityTree.js.map +1 -1
  531. package/dist/components/EntityFinder/tree/VirtualizedTree.js +31 -31
  532. package/dist/components/EntityFinder/tree/VirtualizedTree.js.map +1 -1
  533. package/dist/components/EntityFinder/useEntitySelection.js.map +1 -1
  534. package/dist/components/EntityForm/EntityForm.js.map +1 -1
  535. package/dist/components/EntityHeaderTable/DebouncedInput.js.map +1 -1
  536. package/dist/components/EntityHeaderTable/EntityHeaderTable.js.map +1 -1
  537. package/dist/components/EntityHeaderTable/EntityHeaderTableCellRenderers.js.map +1 -1
  538. package/dist/components/EntityHeaderTable/Filter.js.map +1 -1
  539. package/dist/components/EntityHeaderTable/useEntityHeaderTableState.js.map +1 -1
  540. package/dist/components/EntityIcon.js.map +1 -1
  541. package/dist/components/EntityLink.js.map +1 -1
  542. package/dist/components/EntitySubjectsSelector/EntitySubjectsSelector.js.map +1 -1
  543. package/dist/components/EntityTreeTable/EntityTreeTable.js.map +1 -1
  544. package/dist/components/EntityTreeTable/components/AutoLoadMore.js.map +1 -1
  545. package/dist/components/EntityTreeTable/components/ColumnHeaders.js.map +1 -1
  546. package/dist/components/EntityTreeTable/components/EntityBadgeIconsCell.js.map +1 -1
  547. package/dist/components/EntityTreeTable/components/EntityNameCell.js.map +1 -1
  548. package/dist/components/EntityTreeTable/components/EntityTreeTableContext.js.map +1 -1
  549. package/dist/components/EntityTreeTable/components/EntityTreeTableRow.js.map +1 -1
  550. package/dist/components/EntityTreeTable/components/EntityTreeTableView.js.map +1 -1
  551. package/dist/components/EntityTreeTable/components/IdCell.js.map +1 -1
  552. package/dist/components/EntityTreeTable/components/IdColumnHeader.js.map +1 -1
  553. package/dist/components/EntityTreeTable/hooks/useEntityTreeState.js.map +1 -1
  554. package/dist/components/EntityTreeTable/hooks/useTableColumns.js.map +1 -1
  555. package/dist/components/EntityTreeTable/hooks/useTableData.js.map +1 -1
  556. package/dist/components/EntityTreeTable/hooks/useTreeOperationsWithDirectFetch.js.map +1 -1
  557. package/dist/components/EntityUpload/EntityUpload.js.map +1 -1
  558. package/dist/components/EntityUpload/EntityUploadModal.js +29 -31
  559. package/dist/components/EntityUpload/EntityUploadModal.js.map +1 -1
  560. package/dist/components/EntityUpload/EntityUploadPromptDialog.js.map +1 -1
  561. package/dist/components/EntityUpload/ExternalObjectStoreCredentialsForm.js.map +1 -1
  562. package/dist/components/EntityUpload/FileUploadProgress.js.map +1 -1
  563. package/dist/components/EntityUpload/LinkToURL.js.map +1 -1
  564. package/dist/components/EntityUpload/ProjectStorageLimitAlert.js.map +1 -1
  565. package/dist/components/EntityViewScopeEditor/EntityViewMaskEditor.js.map +1 -1
  566. package/dist/components/EntityViewScopeEditor/EntityViewScopeEditor.js.map +1 -1
  567. package/dist/components/EntityViewScopeEditor/EntityViewScopeEditorModal.js.map +1 -1
  568. package/dist/components/Evaluation/CreatedOnByUserDiv.js.map +1 -1
  569. package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.js.map +1 -1
  570. package/dist/components/Evaluation/EvaluationCard.js.map +1 -1
  571. package/dist/components/Evaluation/EvaluationEditor.js.map +1 -1
  572. package/dist/components/Evaluation/EvaluationEditorPage.js.map +1 -1
  573. package/dist/components/Evaluation/EvaluationRoundEditor.js.map +1 -1
  574. package/dist/components/Evaluation/EvaluationRoundEditorDropdown.js.map +1 -1
  575. package/dist/components/Evaluation/EvaluationRoundEditorList.js.map +1 -1
  576. package/dist/components/Evaluation/input_models/models.js.map +1 -1
  577. package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptions.js.map +1 -1
  578. package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.js.map +1 -1
  579. package/dist/components/EvaluationFinder/EvaluationFinder.js.map +1 -1
  580. package/dist/components/ExperimentalMode/ExperimentalMode.d.ts.map +1 -1
  581. package/dist/components/ExperimentalMode/ExperimentalMode.js +24 -30
  582. package/dist/components/ExperimentalMode/ExperimentalMode.js.map +1 -1
  583. package/dist/components/ExternalFileHandleLink/ExternalFileHandleLink.js.map +1 -1
  584. package/dist/components/FeaturedDataTabs/FacetPlotsCard.js.map +1 -1
  585. package/dist/components/FeaturedDataTabs/FacetPlotsCardGrid.js.map +1 -1
  586. package/dist/components/FeaturedDataTabs/FeaturedDataPlots.js.map +1 -1
  587. package/dist/components/FeaturedDataTabs/FeaturedDataTabs.js.map +1 -1
  588. package/dist/components/FeaturedDataTabs/QueryPerFacetPlotsCard.js.map +1 -1
  589. package/dist/components/FeaturedDataTabs/SingleQueryFacetPlotsCards.js.map +1 -1
  590. package/dist/components/FeaturedResearch/FeaturedResearch.js +16 -18
  591. package/dist/components/FeaturedResearch/FeaturedResearch.js.map +1 -1
  592. package/dist/components/FeaturedToolsList/FeaturedToolCard.js.map +1 -1
  593. package/dist/components/FeaturedToolsList/FeaturedToolsList.js.map +1 -1
  594. package/dist/components/FilePreview/EntityPreview.js.map +1 -1
  595. package/dist/components/FilePreview/FileEntityPreview.js.map +1 -1
  596. package/dist/components/FilePreview/FileHandleContentRenderer.js.map +1 -1
  597. package/dist/components/FilePreview/HtmlPreview/HtmlPreview.js.map +1 -1
  598. package/dist/components/FilePreview/PdfPreview.js.map +1 -1
  599. package/dist/components/FilePreview/PreviewRendererType.js.map +1 -1
  600. package/dist/components/FilePreview/PreviewUtils.js.map +1 -1
  601. package/dist/components/FileUpload/FileUpload.js.map +1 -1
  602. package/dist/components/Forum/DiscussionReply.js.map +1 -1
  603. package/dist/components/Forum/DiscussionSearchResult.js.map +1 -1
  604. package/dist/components/Forum/DiscussionThread.js.map +1 -1
  605. package/dist/components/Forum/ForumPage.js.map +1 -1
  606. package/dist/components/Forum/ForumTable.js.map +1 -1
  607. package/dist/components/Forum/ForumThreadEditor.js.map +1 -1
  608. package/dist/components/Forum/SubscribersModal.js.map +1 -1
  609. package/dist/components/ForumSearch/ForumSearch.js.map +1 -1
  610. package/dist/components/FullTextSearch/FullTextSearch.js.map +1 -1
  611. package/dist/components/FullTextSearch/FullTextSearchUtils.js.map +1 -1
  612. package/dist/components/FullWidthAlert/FullWidthAlert.js.map +1 -1
  613. package/dist/components/GenericCard/BioregistryRules.js.map +1 -1
  614. package/dist/components/GenericCard/CardUtils.js.map +1 -1
  615. package/dist/components/GenericCard/CollapsibleDescription.js.map +1 -1
  616. package/dist/components/GenericCard/CroissantButton/CroissantButton.js.map +1 -1
  617. package/dist/components/GenericCard/GenericCard.d.ts +2 -0
  618. package/dist/components/GenericCard/GenericCard.d.ts.map +1 -1
  619. package/dist/components/GenericCard/GenericCard.js +76 -64
  620. package/dist/components/GenericCard/GenericCard.js.map +1 -1
  621. package/dist/components/GenericCard/GenericCardActionButton.js.map +1 -1
  622. package/dist/components/GenericCard/GenericCardIcon.js.map +1 -1
  623. package/dist/components/GenericCard/GenericCardTitle.js.map +1 -1
  624. package/dist/components/GenericCard/LabelMaybeWithIcon.js.map +1 -1
  625. package/dist/components/GenericCard/Linkify.js.map +1 -1
  626. package/dist/components/GenericCard/PortalDOI/PortalDOI.js.map +1 -1
  627. package/dist/components/GenericCard/PortalDOI/PortalDOIUtils.js.map +1 -1
  628. package/dist/components/GenericCard/SynapseCardLabel.js +1 -1
  629. package/dist/components/GenericCard/SynapseCardLabel.js.map +1 -1
  630. package/dist/components/GenericCard/TableRowGenericCard.d.ts.map +1 -1
  631. package/dist/components/GenericCard/TableRowGenericCard.js +33 -25
  632. package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
  633. package/dist/components/GenericCard/useResolvedSynapseEntity.js.map +1 -1
  634. package/dist/components/Goals/Goals.Desktop.js.map +1 -1
  635. package/dist/components/Goals/Goals.Mobile.js.map +1 -1
  636. package/dist/components/Goals/Goals.js +25 -27
  637. package/dist/components/Goals/Goals.js.map +1 -1
  638. package/dist/components/GoalsV2/GoalsV2.Desktop.js.map +1 -1
  639. package/dist/components/GoalsV2/GoalsV2.Mobile.js.map +1 -1
  640. package/dist/components/GoalsV2/GoalsV2.js +14 -16
  641. package/dist/components/GoalsV2/GoalsV2.js.map +1 -1
  642. package/dist/components/GoalsV3/GoalsV3.Desktop.js.map +1 -1
  643. package/dist/components/GoalsV3/GoalsV3.Mobile.js.map +1 -1
  644. package/dist/components/GoalsV3/GoalsV3.js +14 -16
  645. package/dist/components/GoalsV3/GoalsV3.js.map +1 -1
  646. package/dist/components/GoogleAnalytics/GoogleAnalytics.js.map +1 -1
  647. package/dist/components/GoogleMap/GoogleMap.js.map +1 -1
  648. package/dist/components/GoogleMap/SynapseUserMarker.js.map +1 -1
  649. package/dist/components/HasAccess/AccessIcon.js +10 -10
  650. package/dist/components/HasAccess/AccessIcon.js.map +1 -1
  651. package/dist/components/HasAccess/HasAccessV2.js.map +1 -1
  652. package/dist/components/HasAccess/useHasAccess.js.map +1 -1
  653. package/dist/components/HeaderCard/HeaderCardV2.js.map +1 -1
  654. package/dist/components/HeaderCard.js.map +1 -1
  655. package/dist/components/HelpPopover/HelpPopover.js.map +1 -1
  656. package/dist/components/HexGrid/HexGrid.js.map +1 -1
  657. package/dist/components/IDUReport/IDUReport.js.map +1 -1
  658. package/dist/components/IDUReport/IDUReportSubmissionInfo.js.map +1 -1
  659. package/dist/components/Icon/Icon.js.map +1 -1
  660. package/dist/components/IconList.js.map +1 -1
  661. package/dist/components/IconSvg/IconSvg.js.map +1 -1
  662. package/dist/components/IconSvgButton.js.map +1 -1
  663. package/dist/components/ImageCardGridWithLinks/ImageCardGridWithLinks.js +7 -9
  664. package/dist/components/ImageCardGridWithLinks/ImageCardGridWithLinks.js.map +1 -1
  665. package/dist/components/ImageFromSynapseTable.js.map +1 -1
  666. package/dist/components/InteractiveCopyIdsIcon.js.map +1 -1
  667. package/dist/components/JSONArrayEditor/JSONArrayEditor.js.map +1 -1
  668. package/dist/components/JSONArrayEditor/JSONArrayEditorModal.js.map +1 -1
  669. package/dist/components/JSONArrayEditor/useParseCsv.js.map +1 -1
  670. package/dist/components/JsonLdScript.js.map +1 -1
  671. package/dist/components/JsonSchemaForm/JsonSchemaForm.js.map +1 -1
  672. package/dist/components/JsonSchemaForm/templates/ArrayFieldDescriptionTemplate.js.map +1 -1
  673. package/dist/components/JsonSchemaForm/templates/ArrayFieldItemButtonTemplate.js.map +1 -1
  674. package/dist/components/JsonSchemaForm/templates/ArrayFieldItemTemplate.js.map +1 -1
  675. package/dist/components/JsonSchemaForm/templates/ArrayFieldTemplate.js.map +1 -1
  676. package/dist/components/JsonSchemaForm/templates/ArrayFieldTitleTemplate.js.map +1 -1
  677. package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.js.map +1 -1
  678. package/dist/components/JsonSchemaForm/templates/ButtonTemplate.js.map +1 -1
  679. package/dist/components/JsonSchemaForm/templates/DescriptionFieldTemplate.js.map +1 -1
  680. package/dist/components/JsonSchemaForm/templates/ErrorListTemplate.js.map +1 -1
  681. package/dist/components/JsonSchemaForm/templates/FieldDescriptionTable.js.map +1 -1
  682. package/dist/components/JsonSchemaForm/templates/FieldErrorTemplate.js.map +1 -1
  683. package/dist/components/JsonSchemaForm/templates/FieldTemplate.js.map +1 -1
  684. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js.map +1 -1
  685. package/dist/components/JsonSchemaForm/widgets/BooleanWidget.js.map +1 -1
  686. package/dist/components/JsonSchemaForm/widgets/DateTimeWidget.js.map +1 -1
  687. package/dist/components/JsonSchemaForm/widgets/SelectWidget.js.map +1 -1
  688. package/dist/components/LoadingScreen/LoadingScreen.js.map +1 -1
  689. package/dist/components/MailchimpSubscribeSection/MailchimpSubscribeSection.js.map +1 -1
  690. package/dist/components/Markdown/GovernanceMarkdownGithub.js.map +1 -1
  691. package/dist/components/Markdown/MarkdownCollapse.js.map +1 -1
  692. package/dist/components/Markdown/MarkdownEditor.js.map +1 -1
  693. package/dist/components/Markdown/MarkdownGithub.js.map +1 -1
  694. package/dist/components/Markdown/MarkdownPopover.js.map +1 -1
  695. package/dist/components/Markdown/MarkdownSynapse.d.ts.map +1 -1
  696. package/dist/components/Markdown/MarkdownSynapse.js +75 -106
  697. package/dist/components/Markdown/MarkdownSynapse.js.map +1 -1
  698. package/dist/components/Markdown/MarkdownUtils.d.ts +14 -4
  699. package/dist/components/Markdown/MarkdownUtils.d.ts.map +1 -1
  700. package/dist/components/Markdown/MarkdownUtils.js +38 -37
  701. package/dist/components/Markdown/MarkdownUtils.js.map +1 -1
  702. package/dist/components/Markdown/MarkdownWidget.js.map +1 -1
  703. package/dist/components/Markdown/SynapseWikiContext.js.map +1 -1
  704. package/dist/components/Markdown/UserMentionModal.js.map +1 -1
  705. package/dist/components/Markdown/widget/Bookmarks.js.map +1 -1
  706. package/dist/components/Markdown/widget/MarkdownButton.js.map +1 -1
  707. package/dist/components/Markdown/widget/MarkdownEntityPreview.js.map +1 -1
  708. package/dist/components/Markdown/widget/MarkdownIDUReport.js.map +1 -1
  709. package/dist/components/Markdown/widget/MarkdownProvenanceGraph.js.map +1 -1
  710. package/dist/components/Markdown/widget/MarkdownSynapseImage.js.map +1 -1
  711. package/dist/components/Markdown/widget/MarkdownSynapsePlot.js.map +1 -1
  712. package/dist/components/Markdown/widget/MarkdownSynapseTable.js.map +1 -1
  713. package/dist/components/Markdown/widget/MarkdownTableOfContents.js.map +1 -1
  714. package/dist/components/Markdown/widget/MarkdownUserOrTeamBadge.js.map +1 -1
  715. package/dist/components/Markdown/widget/MarkdownVideo.js.map +1 -1
  716. package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js.map +1 -1
  717. package/dist/components/ModalDownload/ModalDownload.FormSchema.js.map +1 -1
  718. package/dist/components/ModalDownload/ModalDownload.js.map +1 -1
  719. package/dist/components/MuiContainer.js.map +1 -1
  720. package/dist/components/OAuthClientAclEditor/OAuthAclEditorModal.js.map +1 -1
  721. package/dist/components/OAuthClientAclEditor/OAuthClientAclEditor.js.map +1 -1
  722. package/dist/components/OAuthClientManagement/CreateOAuthClient.js.map +1 -1
  723. package/dist/components/OAuthClientManagement/OAuthManagement.js.map +1 -1
  724. package/dist/components/OrientationBanner/OrientationBanner.js.map +1 -1
  725. package/dist/components/PageProgress/PageProgress.js.map +1 -1
  726. package/dist/components/Plot/BarPlot.js.map +1 -1
  727. package/dist/components/Plot/DotPlot.js.map +1 -1
  728. package/dist/components/Plot/Plot.d.ts +12 -1
  729. package/dist/components/Plot/Plot.d.ts.map +1 -1
  730. package/dist/components/Plot/Plot.js +5 -1
  731. package/dist/components/Plot/Plot.js.map +1 -1
  732. package/dist/components/Plot/PlotPanelHeader.js.map +1 -1
  733. package/dist/components/Plot/SynapsePlot.js.map +1 -1
  734. package/dist/components/Plot/SynapseSankeyPlot.css +1 -0
  735. package/dist/components/Plot/SynapseSankeyPlot.d.ts +54 -0
  736. package/dist/components/Plot/SynapseSankeyPlot.d.ts.map +1 -0
  737. package/dist/components/Plot/SynapseSankeyPlot.js +359 -0
  738. package/dist/components/Plot/SynapseSankeyPlot.js.map +1 -0
  739. package/dist/components/Plot/SynapseSankeyPlot.module.js +15 -0
  740. package/dist/components/Plot/SynapseSankeyPlot.module.js.map +1 -0
  741. package/dist/components/Plot/SynapseSankeyPlot.module.scss +63 -0
  742. package/dist/components/Plot/ThemesPlot.js.map +1 -1
  743. package/dist/components/Plot/UpsetPlot.js.map +1 -1
  744. package/dist/components/Plot/index.d.ts +3 -1
  745. package/dist/components/Plot/index.d.ts.map +1 -1
  746. package/dist/components/Plot/index.js +2 -1
  747. package/dist/components/Plot/safe-react-plotly-factory.js.map +1 -1
  748. package/dist/components/PortalAclEditor/PortalAclEditor.js.map +1 -1
  749. package/dist/components/PortalAclEditor/PortalAclEditorModal.js.map +1 -1
  750. package/dist/components/PortalFeatureHighlights/PortalFeatureHighlights.js.map +1 -1
  751. package/dist/components/PortalFeaturedPartners/PortalFeaturedPartners.js +4 -6
  752. package/dist/components/PortalFeaturedPartners/PortalFeaturedPartners.js.map +1 -1
  753. package/dist/components/PortalHomePageHeader/PortalHomePageHeader.js.map +1 -1
  754. package/dist/components/PortalList/CreatePortalModal.js.map +1 -1
  755. package/dist/components/PortalList/PortalCard.js.map +1 -1
  756. package/dist/components/PortalList/PortalList.js.map +1 -1
  757. package/dist/components/PortalSectionHeader/PortalSectionHeader.js.map +1 -1
  758. package/dist/components/ProgrammaticInstructionsModal/ProgrammaticInstructionsModal.js +69 -69
  759. package/dist/components/ProgrammaticInstructionsModal/ProgrammaticInstructionsModal.js.map +1 -1
  760. package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js.map +1 -1
  761. package/dist/components/Programs/Programs.Desktop.js.map +1 -1
  762. package/dist/components/Programs/Programs.Mobile.js.map +1 -1
  763. package/dist/components/Programs/Programs.js.map +1 -1
  764. package/dist/components/ProjectStorage/ProjectDataAvailability.js.map +1 -1
  765. package/dist/components/ProvenanceGraph/ActivityNodeLabel.js.map +1 -1
  766. package/dist/components/ProvenanceGraph/EntityNodeLabel.js.map +1 -1
  767. package/dist/components/ProvenanceGraph/EntityPlaceholderNodeLabel.js.map +1 -1
  768. package/dist/components/ProvenanceGraph/ExpandGraphNodeLabel.js.map +1 -1
  769. package/dist/components/ProvenanceGraph/ExternalGraphNodeLabel.js.map +1 -1
  770. package/dist/components/ProvenanceGraph/ProvenanceEntityIcon.js.map +1 -1
  771. package/dist/components/ProvenanceGraph/ProvenanceExternalIcon.js.map +1 -1
  772. package/dist/components/ProvenanceGraph/ProvenanceGraph.js.map +1 -1
  773. package/dist/components/ProvenanceGraph/ProvenanceGraphUtils.js.map +1 -1
  774. package/dist/components/ProvenanceGraph/ProvenanceUtils.js +13 -13
  775. package/dist/components/ProvenanceGraph/ProvenanceUtils.js.map +1 -1
  776. package/dist/components/ProvenanceGraph/UndefinedNodeLabel.js.map +1 -1
  777. package/dist/components/QueryContext/QueryContext.js.map +1 -1
  778. package/dist/components/QueryCount/QueryCount.js.map +1 -1
  779. package/dist/components/QueryCountButton/QueryCountButton.js.map +1 -1
  780. package/dist/components/QuerySortSelector.js.map +1 -1
  781. package/dist/components/QueryVisualizationWrapper/NoContentPlaceholder.js.map +1 -1
  782. package/dist/components/QueryVisualizationWrapper/QueryVisualizationContext.js.map +1 -1
  783. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js.map +1 -1
  784. package/dist/components/QueryWrapper/QueryWrapper.js +27 -27
  785. package/dist/components/QueryWrapper/QueryWrapper.js.map +1 -1
  786. package/dist/components/QueryWrapper/QueryWrapperLoadingScreen.js.map +1 -1
  787. package/dist/components/QueryWrapper/TableQueryUseQueryOptions.js.map +1 -1
  788. package/dist/components/QueryWrapper/TableRowSelectionState.js.map +1 -1
  789. package/dist/components/QueryWrapper/ViewMoreQueryResultsButton.js.map +1 -1
  790. package/dist/components/QueryWrapper/generateEncodedPathAndQueryForSelectedFacetURL.js.map +1 -1
  791. package/dist/components/QueryWrapper/useComputeRowSelectionPrimaryKey.js.map +1 -1
  792. package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.js.map +1 -1
  793. package/dist/components/QueryWrapper/useGetQueryMetadata.js.map +1 -1
  794. package/dist/components/QueryWrapper/useHasFacetedSelectColumn.js.map +1 -1
  795. package/dist/components/QueryWrapper/useOnQueryDataChange.js.map +1 -1
  796. package/dist/components/QueryWrapperErrorBoundary.js.map +1 -1
  797. package/dist/components/QueryWrapperPlotNav/LastUpdatedOn.js.map +1 -1
  798. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
  799. package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.js.map +1 -1
  800. package/dist/components/QueryWrapperPlotNav/RowSetView.js.map +1 -1
  801. package/dist/components/QueryWrapperPlotNav/UseRowSet.js.map +1 -1
  802. package/dist/components/RORInstitutionField/RORInstitutionField.js.map +1 -1
  803. package/dist/components/RecentPublicationsGrid/RecentPublicationsGrid.js +6 -8
  804. package/dist/components/RecentPublicationsGrid/RecentPublicationsGrid.js.map +1 -1
  805. package/dist/components/RegisterPageLogoutPrompt/RegisterPageLogoutPrompt.js.map +1 -1
  806. package/dist/components/ReleaseCard/ReleaseCard.js.map +1 -1
  807. package/dist/components/ReleaseCard/ReleaseCardLarge.js.map +1 -1
  808. package/dist/components/ReleaseCard/ReleaseCardMedium.js.map +1 -1
  809. package/dist/components/ReleaseCard/ReleaseCardUtils.js.map +1 -1
  810. package/dist/components/RenderIfInView/RenderIfInView.js.map +1 -1
  811. package/dist/components/ResizableContainer/ResizableContainer.js.map +1 -1
  812. package/dist/components/ResizableContainer/hooks/useResizable.js.map +1 -1
  813. package/dist/components/Resources/Resources.Desktop.js.map +1 -1
  814. package/dist/components/Resources/Resources.Mobile.js.map +1 -1
  815. package/dist/components/Resources/Resources.js +8 -11
  816. package/dist/components/Resources/Resources.js.map +1 -1
  817. package/dist/components/RowDataTable/RowDataTable.js.map +1 -1
  818. package/dist/components/RowDataTable/RowDataTableWithQuery.js.map +1 -1
  819. package/dist/components/RssFeedCards/RssFeedCards.js.map +1 -1
  820. package/dist/components/SageResourcesPopover/SageResourcesPopover.js.map +1 -1
  821. package/dist/components/SchemaDrivenAnnotationEditor/AnnotationEditorUtils.js.map +1 -1
  822. package/dist/components/SchemaDrivenAnnotationEditor/SchemaDrivenAnnotationEditor.js.map +1 -1
  823. package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.js.map +1 -1
  824. package/dist/components/SchemaDrivenAnnotationEditor/field/SynapseAnnotationsRJSFObjectField.js.map +1 -1
  825. package/dist/components/SchemaDrivenAnnotationEditor/template/AdditionalPropertyContext.js.map +1 -1
  826. package/dist/components/SchemaDrivenAnnotationEditor/template/ObjectFieldTemplate.js.map +1 -1
  827. package/dist/components/SchemaDrivenAnnotationEditor/template/SynapseAnnotationsWrapIfAdditionalTemplate.js.map +1 -1
  828. package/dist/components/SchemaDrivenAnnotationEditor/widget/TextWidget.js.map +1 -1
  829. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts +13 -12
  830. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts.map +1 -1
  831. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js +88 -77
  832. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
  833. package/dist/components/SearchQueryWrapper/SearchQueryWrapper.js.map +1 -1
  834. package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.js.map +1 -1
  835. package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js.map +1 -1
  836. package/dist/components/SetBasicAccessRequirementFields/AccessRequirementTextInstructions.js.map +1 -1
  837. package/dist/components/SetBasicAccessRequirementFields/AccessRequirementWikiInstructions.js.map +1 -1
  838. package/dist/components/SetBasicAccessRequirementFields/AccessorRequirements.js.map +1 -1
  839. package/dist/components/SetBasicAccessRequirementFields/GovernanceUtils.js.map +1 -1
  840. package/dist/components/SetBasicAccessRequirementFields/SetBasicAccessRequirementFields.js.map +1 -1
  841. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js.map +1 -1
  842. package/dist/components/ShareThisPage/ShareThisPage.js.map +1 -1
  843. package/dist/components/ShowMore/ShowMore.js.map +1 -1
  844. package/dist/components/SignInButton.js.map +1 -1
  845. package/dist/components/SignInRequiredModal/SignInRequiredModal.js.map +1 -1
  846. package/dist/components/Skeleton/SkeletonButton.js.map +1 -1
  847. package/dist/components/Skeleton/SkeletonInlineBlock.js.map +1 -1
  848. package/dist/components/Skeleton/SkeletonParagraph.js.map +1 -1
  849. package/dist/components/Skeleton/SkeletonTable.js.map +1 -1
  850. package/dist/components/SmartLink/SmartButton.js.map +1 -1
  851. package/dist/components/SmartLink/SmartLink.js.map +1 -1
  852. package/dist/components/SmartLink/useSmartLink.js.map +1 -1
  853. package/dist/components/SourceAppImage.js.map +1 -1
  854. package/dist/components/SpinnerButton/SpinnerButton.js.map +1 -1
  855. package/dist/components/SqlDefinedTableEditor/SqlDefinedTableEditor.js.map +1 -1
  856. package/dist/components/SqlDefinedTableEditor/SqlDefinedTableEditorModal.js.map +1 -1
  857. package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.js.map +1 -1
  858. package/dist/components/StatisticsPlot.js.map +1 -1
  859. package/dist/components/StepperDialog/StepperDialog.js.map +1 -1
  860. package/dist/components/StorybookComponentWrapper.js.map +1 -1
  861. package/dist/components/SubmissionViewScopeEditor/SubmissionViewScopeEditor.js.map +1 -1
  862. package/dist/components/SubmissionViewScopeEditor/SubmissionViewScopeEditorModal.js.map +1 -1
  863. package/dist/components/SubscriptionPage/ForumTopic.js.map +1 -1
  864. package/dist/components/SubscriptionPage/SubscriptionItem.js.map +1 -1
  865. package/dist/components/SubscriptionPage/SubscriptionPage.js.map +1 -1
  866. package/dist/components/SubscriptionPage/ThreadTopic.js.map +1 -1
  867. package/dist/components/SubscriptionPage/Topic.js.map +1 -1
  868. package/dist/components/SubsectionRowRenderer/SubsectionRowRenderer.js.map +1 -1
  869. package/dist/components/SustainabilityScorecard/Dial.js.map +1 -1
  870. package/dist/components/SustainabilityScorecard/DialLayout.js.map +1 -1
  871. package/dist/components/SustainabilityScorecard/SustainabilityScorecard.js.map +1 -1
  872. package/dist/components/SustainabilityScorecard/SustainabilityScorecardSummary.js.map +1 -1
  873. package/dist/components/SustainabilityScorecard/SustainabilityScorecardUtils.js.map +1 -1
  874. package/dist/components/SynapseChat/AccessLevelMenu.js.map +1 -1
  875. package/dist/components/SynapseChat/GridAgentChat.js.map +1 -1
  876. package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
  877. package/dist/components/SynapseChat/SynapseChatDialog.js.map +1 -1
  878. package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
  879. package/dist/components/SynapseChat/SynapseChatMessage.js.map +1 -1
  880. package/dist/components/SynapseChat/SynapsePortalChatDialog.js.map +1 -1
  881. package/dist/components/SynapseChat/extractMessageFromTraceEvent.js.map +1 -1
  882. package/dist/components/SynapseChat/useChatState.js.map +1 -1
  883. package/dist/components/SynapseFooter/SynapseFooter.js.map +1 -1
  884. package/dist/components/SynapseFooter/SynapseLinksColumn.js.map +1 -1
  885. package/dist/components/SynapseForm/DataDebug.js.map +1 -1
  886. package/dist/components/SynapseForm/Header.js.map +1 -1
  887. package/dist/components/SynapseForm/NavButtons.js.map +1 -1
  888. package/dist/components/SynapseForm/StepsSideNav.js.map +1 -1
  889. package/dist/components/SynapseForm/SummaryTable.js.map +1 -1
  890. package/dist/components/SynapseForm/SynapseForm.js.map +1 -1
  891. package/dist/components/SynapseForm/SynapseFormCheckboxWidget.js.map +1 -1
  892. package/dist/components/SynapseForm/SynapseFormCheckboxesWidget.js.map +1 -1
  893. package/dist/components/SynapseForm/SynapseFormRadioWidget.js.map +1 -1
  894. package/dist/components/SynapseForm/SynapseFormSubmissionGrid.js.map +1 -1
  895. package/dist/components/SynapseForm/SynapseFormUtils.js.map +1 -1
  896. package/dist/components/SynapseForm/SynapseFormWrapper.js.map +1 -1
  897. package/dist/components/SynapseForm/WarningDialog.js.map +1 -1
  898. package/dist/components/SynapseForm/types.js.map +1 -1
  899. package/dist/components/SynapseForm/useGetFormPropsFromSearchParams.js.map +1 -1
  900. package/dist/components/SynapseHomepageV2/FloatingBlobsBackground.js.map +1 -1
  901. package/dist/components/SynapseHomepageV2/HomepageStyles.js.map +1 -1
  902. package/dist/components/SynapseHomepageV2/SynapseByTheNumbers.js.map +1 -1
  903. package/dist/components/SynapseHomepageV2/SynapseByTheNumbersItem.js.map +1 -1
  904. package/dist/components/SynapseHomepageV2/SynapseFeatureItem.js.map +1 -1
  905. package/dist/components/SynapseHomepageV2/SynapseFeaturedDatasetItem.js.map +1 -1
  906. package/dist/components/SynapseHomepageV2/SynapseFeaturedDatasets.js.map +1 -1
  907. package/dist/components/SynapseHomepageV2/SynapseFeatures.js.map +1 -1
  908. package/dist/components/SynapseHomepageV2/SynapseHomepageChatSearch.js +18 -21
  909. package/dist/components/SynapseHomepageV2/SynapseHomepageChatSearch.js.map +1 -1
  910. package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.js.map +1 -1
  911. package/dist/components/SynapseHomepageV2/SynapseHomepageSearch.js.map +1 -1
  912. package/dist/components/SynapseHomepageV2/SynapseHomepageV2.js.map +1 -1
  913. package/dist/components/SynapseHomepageV2/SynapseHotdrops.js.map +1 -1
  914. package/dist/components/SynapseHomepageV2/SynapseHotdropsItem.js.map +1 -1
  915. package/dist/components/SynapseHomepageV2/SynapseInAction.js.map +1 -1
  916. package/dist/components/SynapseHomepageV2/SynapseInActionItem.js.map +1 -1
  917. package/dist/components/SynapseHomepageV2/SynapsePartners.js.map +1 -1
  918. package/dist/components/SynapseHomepageV2/SynapsePlan.js.map +1 -1
  919. package/dist/components/SynapseHomepageV2/SynapsePlanContent.js.map +1 -1
  920. package/dist/components/SynapseHomepageV2/SynapsePlans.js.map +1 -1
  921. package/dist/components/SynapseHomepageV2/SynapsePlansPage.js.map +1 -1
  922. package/dist/components/SynapseHomepageV2/SynapseSearchChips.js.map +1 -1
  923. package/dist/components/SynapseHomepageV2/SynapseTrendingProjects.js.map +1 -1
  924. package/dist/components/SynapseHomepageV2/SynapseTrendingProjectsItem.js.map +1 -1
  925. package/dist/components/SynapseHomepageV2/WordPressNews.js.map +1 -1
  926. package/dist/components/SynapseHomepageV2/WordPressNewsItem.js.map +1 -1
  927. package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js +78 -78
  928. package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js.map +1 -1
  929. package/dist/components/SynapsePortalBanners/SynapsePortalBanners.js.map +1 -1
  930. package/dist/components/SynapseSearchPageResults/HasAccessChip.js.map +1 -1
  931. package/dist/components/SynapseSearchPageResults/HighlightedTypography.js.map +1 -1
  932. package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanel.js.map +1 -1
  933. package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.js.map +1 -1
  934. package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.js.map +1 -1
  935. package/dist/components/SynapseSearchPageResults/SynapseSearchPage.js.map +1 -1
  936. package/dist/components/SynapseSearchPageResults/SynapseSearchPageResults.js.map +1 -1
  937. package/dist/components/SynapseSearchPageResults/SynapseSearchPageRouter.js.map +1 -1
  938. package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.js.map +1 -1
  939. package/dist/components/SynapseSearchPageResults/chipStyles.js.map +1 -1
  940. package/dist/components/SynapseTable/CustomControls/CustomControlButton.js.map +1 -1
  941. package/dist/components/SynapseTable/CustomControls/CustomControlPanel.js.map +1 -1
  942. package/dist/components/SynapseTable/CustomControls/CustomControls.js.map +1 -1
  943. package/dist/components/SynapseTable/EntityIDColumnCopyIcon.js.map +1 -1
  944. package/dist/components/SynapseTable/ExpandCollapseButton.js.map +1 -1
  945. package/dist/components/SynapseTable/ExpandableTableDataCell.js.map +1 -1
  946. package/dist/components/SynapseTable/NoContentAvailable.js.map +1 -1
  947. package/dist/components/SynapseTable/NoContentPlaceholderType.js.map +1 -1
  948. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js +4 -4
  949. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js.map +1 -1
  950. package/dist/components/SynapseTable/RowSelection/RowSelectionUI.js.map +1 -1
  951. package/dist/components/SynapseTable/SearchResultsNotFound.js.map +1 -1
  952. package/dist/components/SynapseTable/SearchV2.js.map +1 -1
  953. package/dist/components/SynapseTable/SqlEditor.js.map +1 -1
  954. package/dist/components/SynapseTable/SynapseTable.js.map +1 -1
  955. package/dist/components/SynapseTable/SynapseTableCell/EntityIdList.js.map +1 -1
  956. package/dist/components/SynapseTable/SynapseTableCell/EvaluationIdRenderer.js.map +1 -1
  957. package/dist/components/SynapseTable/SynapseTableCell/JSON/ComplexJSONRenderer.js.map +1 -1
  958. package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONArrayRenderer.js.map +1 -1
  959. package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONObjectRenderer.js.map +1 -1
  960. package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONPrimitiveRenderer.js.map +1 -1
  961. package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONRendererUtils.js.map +1 -1
  962. package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONTableCellRenderer.js.map +1 -1
  963. package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.js.map +1 -1
  964. package/dist/components/SynapseTable/SynapseTableCell/UserIdList.js.map +1 -1
  965. package/dist/components/SynapseTable/SynapseTableConstants.js.map +1 -1
  966. package/dist/components/SynapseTable/SynapseTableContext.js.map +1 -1
  967. package/dist/components/SynapseTable/SynapseTableRenderers.js.map +1 -1
  968. package/dist/components/SynapseTable/SynapseTableUtils.js.map +1 -1
  969. package/dist/components/SynapseTable/TableIsEmpty.js.map +1 -1
  970. package/dist/components/SynapseTable/TablePagination.js.map +1 -1
  971. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.d.ts.map +1 -1
  972. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js +63 -74
  973. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js.map +1 -1
  974. package/dist/components/SynapseTable/TopLevelControls/TopLevelControlsUtils.js.map +1 -1
  975. package/dist/components/SynapseTable/datasets/DatasetEditorCheckboxCell.js.map +1 -1
  976. package/dist/components/SynapseTable/datasets/DatasetEditorUtils.js.map +1 -1
  977. package/dist/components/SynapseTable/datasets/DatasetEditorVersionCell.js.map +1 -1
  978. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +131 -133
  979. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js.map +1 -1
  980. package/dist/components/SynapseTable/datasets/EntityFetchErrorCell.js.map +1 -1
  981. package/dist/components/SynapseTable/export/ADDiscoveryPortalInstructions.js.map +1 -1
  982. package/dist/components/SynapseTable/export/ExportToAnalysisPlatformDialog.js +48 -51
  983. package/dist/components/SynapseTable/export/ExportToAnalysisPlatformDialog.js.map +1 -1
  984. package/dist/components/SynapseTable/export/ExternalAnalysisPlatformInstructions.js.map +1 -1
  985. package/dist/components/SynapseTable/export/ExternalAnalysisPlatformsConstants.js.map +1 -1
  986. package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.js.map +1 -1
  987. package/dist/components/SynapseTable/export/ExternalPlatformDisclaimer.js.map +1 -1
  988. package/dist/components/SynapseTable/table-top/ColumnSelection.js.map +1 -1
  989. package/dist/components/SynapseTable/table-top/DownloadLoginModal.js.map +1 -1
  990. package/dist/components/SynapseTable/table-top/DownloadOptions.js.map +1 -1
  991. package/dist/components/SynapseTable/usePrefetchTableData.js.map +1 -1
  992. package/dist/components/SynapseTable/useTableSort.js.map +1 -1
  993. package/dist/components/SystemUseNotification/SystemUseNotification.js.map +1 -1
  994. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.d.ts.map +1 -1
  995. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +72 -68
  996. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js.map +1 -1
  997. package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/DefaultValueField.js.map +1 -1
  998. package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/FieldWithRecommendedMinimum.js.map +1 -1
  999. package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/MultiValueField.js.map +1 -1
  1000. package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js.map +1 -1
  1001. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditor.js.map +1 -1
  1002. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorTestUtils.js.map +1 -1
  1003. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.d.ts +27 -1
  1004. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.d.ts.map +1 -1
  1005. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js +47 -36
  1006. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js.map +1 -1
  1007. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +10 -10
  1008. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
  1009. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.js.map +1 -1
  1010. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormReducer.d.ts +12 -12
  1011. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormReducer.js.map +1 -1
  1012. package/dist/components/TableColumnSchemaEditor/Validators/BooleanSchema.d.ts +4 -1
  1013. package/dist/components/TableColumnSchemaEditor/Validators/BooleanSchema.d.ts.map +1 -1
  1014. package/dist/components/TableColumnSchemaEditor/Validators/BooleanSchema.js.map +1 -1
  1015. package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.d.ts +167 -517
  1016. package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.d.ts.map +1 -1
  1017. package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.js +65 -65
  1018. package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.js.map +1 -1
  1019. package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.d.ts +1 -1
  1020. package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.d.ts.map +1 -1
  1021. package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.js.map +1 -1
  1022. package/dist/components/TableColumnSchemaEditor/Validators/DefaultValueValidator.js.map +1 -1
  1023. package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.d.ts +1 -1
  1024. package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.d.ts.map +1 -1
  1025. package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.js +6 -13
  1026. package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.js.map +1 -1
  1027. package/dist/components/TableColumnSchemaEditor/Validators/EntityIdSchema.d.ts +1 -1
  1028. package/dist/components/TableColumnSchemaEditor/Validators/EntityIdSchema.d.ts.map +1 -1
  1029. package/dist/components/TableColumnSchemaEditor/Validators/EntityIdSchema.js.map +1 -1
  1030. package/dist/components/TableColumnSchemaEditor/Validators/EnumValuesValidator.js.map +1 -1
  1031. package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.d.ts +1 -1
  1032. package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.d.ts.map +1 -1
  1033. package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.js +2 -2
  1034. package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.js.map +1 -1
  1035. package/dist/components/TableColumnSchemaEditor/Validators/OptionalStringSchema.d.ts +1 -1
  1036. package/dist/components/TableColumnSchemaEditor/Validators/OptionalStringSchema.d.ts.map +1 -1
  1037. package/dist/components/TableColumnSchemaEditor/Validators/OptionalStringSchema.js.map +1 -1
  1038. package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.d.ts +2 -2
  1039. package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.d.ts.map +1 -1
  1040. package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.js +15 -16
  1041. package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.js.map +1 -1
  1042. package/dist/components/TableFeedCards/TableFeedCards.js.map +1 -1
  1043. package/dist/components/TanStackTable/ColumnHeader.js.map +1 -1
  1044. package/dist/components/TanStackTable/ColumnHeaderEnumFilter.js.map +1 -1
  1045. package/dist/components/TanStackTable/StyledTanStackTable.js.map +1 -1
  1046. package/dist/components/TanStackTable/StyledVirtualTanStackTable.js.map +1 -1
  1047. package/dist/components/TanStackTable/TableBody.js.map +1 -1
  1048. package/dist/components/TanStackTable/TableCellRenderer.js.map +1 -1
  1049. package/dist/components/TanStackTable/TanStackTableUtils.js.map +1 -1
  1050. package/dist/components/TeamBadge.js.map +1 -1
  1051. package/dist/components/TeamSubjectsSelector/TeamBadgeOrError.js.map +1 -1
  1052. package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.js.map +1 -1
  1053. package/dist/components/TemplateComponent.js.map +1 -1
  1054. package/dist/components/TemporaryBanner/TemporaryBanner.js.map +1 -1
  1055. package/dist/components/TermsAndConditions/TermsAndConditions.js.map +1 -1
  1056. package/dist/components/TermsAndConditions/TermsAndConditionsItem.js.map +1 -1
  1057. package/dist/components/TextField/TextField.js.map +1 -1
  1058. package/dist/components/TextField/TextFieldWithWordLimit.js.map +1 -1
  1059. package/dist/components/TextToComponentCollapse.js.map +1 -1
  1060. package/dist/components/ThemeGallery/ThemeGallery.js.map +1 -1
  1061. package/dist/components/TimelinePlot/TimelineLegendItem.js.map +1 -1
  1062. package/dist/components/TimelinePlot/TimelinePhase.js.map +1 -1
  1063. package/dist/components/TimelinePlot/TimelinePlot.js.map +1 -1
  1064. package/dist/components/TimelinePlot/TimelinePlotSpeciesSelector.js.map +1 -1
  1065. package/dist/components/TimelinePlot/phasesQueryResponseData.js.map +1 -1
  1066. package/dist/components/ToastMessage/ToastMessage.js.map +1 -1
  1067. package/dist/components/TotalQueryResults.js.map +1 -1
  1068. package/dist/components/UserCard/Avatar.js.map +1 -1
  1069. package/dist/components/UserCard/UserBadge.js.map +1 -1
  1070. package/dist/components/UserCard/UserCard.js.map +1 -1
  1071. package/dist/components/UserCard/UserCardContextMenu.js.map +1 -1
  1072. package/dist/components/UserCard/UserCardLarge.js.map +1 -1
  1073. package/dist/components/UserCard/UserCardMedium.js.map +1 -1
  1074. package/dist/components/UserCardList/UserCardList.js.map +1 -1
  1075. package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.Desktop.js.map +1 -1
  1076. package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.Mobile.js.map +1 -1
  1077. package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.js.map +1 -1
  1078. package/dist/components/UserCardList/UserCardListRotate.js.map +1 -1
  1079. package/dist/components/UserOrTeamBadge/UserOrTeamBadge.js.map +1 -1
  1080. package/dist/components/UserOrTeamBadge/useUserOrTeam.js.map +1 -1
  1081. package/dist/components/UserProfileLinks/UserChallenges.js.map +1 -1
  1082. package/dist/components/UserProfileLinks/UserProfileLinks.js.map +1 -1
  1083. package/dist/components/UserProfileLinks/UserProjects.js.map +1 -1
  1084. package/dist/components/UserProfileLinks/UserTeams.js.map +1 -1
  1085. package/dist/components/UserSearchBox/UserSearchBox.js.map +1 -1
  1086. package/dist/components/Webhook/CreateWebhookModal.js.map +1 -1
  1087. package/dist/components/Webhook/WebhookDashboard.js.map +1 -1
  1088. package/dist/components/Webhook/WebhookVerificationDialog.js.map +1 -1
  1089. package/dist/components/WikiMarkdownEditor/WikiMarkdownEditor.js.map +1 -1
  1090. package/dist/components/WikiMarkdownEditorButton/WikiMarkdownEditorButton.js.map +1 -1
  1091. package/dist/components/WizardChoiceButton/WizardChoiceButton.js.map +1 -1
  1092. package/dist/components/WizardChoiceButton/WizardChoiceButtonDescription.js.map +1 -1
  1093. package/dist/components/WizardChoiceButton/WizardChoiceButtonGroup.js.map +1 -1
  1094. package/dist/components/WordPress/WordPressLatestPostChip.js.map +1 -1
  1095. package/dist/components/WordPress/useWordPressCategories.js.map +1 -1
  1096. package/dist/components/WordPress/useWordPressPosts.js.map +1 -1
  1097. package/dist/components/dataaccess/AccessApprovalsTable.js.map +1 -1
  1098. package/dist/components/dataaccess/AccessHistoryDashboard.js.map +1 -1
  1099. package/dist/components/dataaccess/AccessRequestSubmissionTable.js.map +1 -1
  1100. package/dist/components/dataaccess/AccessRequirementDashboard.js.map +1 -1
  1101. package/dist/components/dataaccess/AccessRequirementSearchBox/AccessRequirementSearchBox.js.map +1 -1
  1102. package/dist/components/dataaccess/AccessRequirementTable.js.map +1 -1
  1103. package/dist/components/dataaccess/AccessSubmissionDashboard.js.map +1 -1
  1104. package/dist/components/dataaccess/RejectDataAccessRequestModal.js.map +1 -1
  1105. package/dist/components/dataaccess/RejectProfileValidationRequestModal.js.map +1 -1
  1106. package/dist/components/dataaccess/ReviewerDashboard.js.map +1 -1
  1107. package/dist/components/dataaccess/SubmissionPage/ApproveSubmissionConfirmationModal.js.map +1 -1
  1108. package/dist/components/dataaccess/SubmissionPage/CancelDataAccessRequestConfirmationModal.js.map +1 -1
  1109. package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js.map +1 -1
  1110. package/dist/components/dataaccess/UseAccessRequirementTable.js.map +1 -1
  1111. package/dist/components/dataaccess/UserAccessRequestHistory/SubmissionSortStateTranslator.js.map +1 -1
  1112. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.js.map +1 -1
  1113. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.js.map +1 -1
  1114. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryTable.js.map +1 -1
  1115. package/dist/components/doi/CreateOrUpdateDoiModal.js.map +1 -1
  1116. package/dist/components/doi/DoiFormSchemas.js.map +1 -1
  1117. package/dist/components/doi/PrivateEntityDoiWarning.js.map +1 -1
  1118. package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js.map +1 -1
  1119. package/dist/components/download_list/DownloadConfirmationUI.js +30 -32
  1120. package/dist/components/download_list/DownloadConfirmationUI.js.map +1 -1
  1121. package/dist/components/download_list/DownloadConfirmationUtils.js.map +1 -1
  1122. package/dist/components/download_list/DownloadDetails.js.map +1 -1
  1123. package/dist/components/download_list/index.js.map +1 -1
  1124. package/dist/components/entity/metadata/AnnotationsTable.js.map +1 -1
  1125. package/dist/components/entity/metadata/EntityAnnotationKey.js.map +1 -1
  1126. package/dist/components/entity/metadata/EntityModal.js.map +1 -1
  1127. package/dist/components/entity/metadata/MetadataTable.js.map +1 -1
  1128. package/dist/components/entity/page/CreatedByModifiedBy.js.map +1 -1
  1129. package/dist/components/entity/page/action_menu/EntityActionMenu.js.map +1 -1
  1130. package/dist/components/entity/page/breadcrumbs/EntityPageBreadcrumbs.js.map +1 -1
  1131. package/dist/components/entity/page/title_bar/CitationsDialog.js.map +1 -1
  1132. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js.map +1 -1
  1133. package/dist/components/entity/page/title_bar/EntityTitleBarVersionInfo.js.map +1 -1
  1134. package/dist/components/entity/page/title_bar/TitleBarProperties.js.map +1 -1
  1135. package/dist/components/entity/page/title_bar/useDataCiteUsage.js.map +1 -1
  1136. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
  1137. package/dist/components/entity/page/title_bar/useGetMentions.js.map +1 -1
  1138. package/dist/components/error/ErrorBanner.js.map +1 -1
  1139. package/dist/components/error/ErrorChip.js.map +1 -1
  1140. package/dist/components/error/ErrorPage.js +24 -24
  1141. package/dist/components/error/ErrorPage.js.map +1 -1
  1142. package/dist/components/error/RouteErrorBoundary.js.map +1 -1
  1143. package/dist/components/error/SendMessageToEntityOwnerDialog.js.map +1 -1
  1144. package/dist/components/error/SynapseObjectDOIInfo.js.map +1 -1
  1145. package/dist/components/favorites/FavoriteButton.js.map +1 -1
  1146. package/dist/components/favorites/FavoritesPage.js.map +1 -1
  1147. package/dist/components/file/upload/BasicFileHandleUpload.js.map +1 -1
  1148. package/dist/components/file/upload/MultiFileUploadProgress.js.map +1 -1
  1149. package/dist/components/file/upload/UploadFilePanel.js.map +1 -1
  1150. package/dist/components/form/RadioGroupWithOtherString.js.map +1 -1
  1151. package/dist/components/home_page/ExpandableContent.js.map +1 -1
  1152. package/dist/components/index.js +48 -47
  1153. package/dist/components/layout/InfiniteTableLayout.js.map +1 -1
  1154. package/dist/components/layout/SWCHeader.js.map +1 -1
  1155. package/dist/components/layout/SWCPageLayout.js.map +1 -1
  1156. package/dist/components/menu/ComplexMenu.js.map +1 -1
  1157. package/dist/components/menu/DropdownMenu.js.map +1 -1
  1158. package/dist/components/row_renderers/Dataset.js.map +1 -1
  1159. package/dist/components/row_renderers/Funder.js.map +1 -1
  1160. package/dist/components/row_renderers/ObservationCard.js.map +1 -1
  1161. package/dist/components/row_renderers/utils/CardFooter.js.map +1 -1
  1162. package/dist/components/row_renderers/utils/ChipContainer.js.map +1 -1
  1163. package/dist/components/styled/HoverPopover.js.map +1 -1
  1164. package/dist/components/styled/InlineBadge.js.map +1 -1
  1165. package/dist/components/styled/InputSizedButton.js.map +1 -1
  1166. package/dist/components/styled/LargeButton.js.map +1 -1
  1167. package/dist/components/styled/LeftRightPanel.js.map +1 -1
  1168. package/dist/components/styled/LightTooltip.js.map +1 -1
  1169. package/dist/components/styled/StyledFormControl.js.map +1 -1
  1170. package/dist/components/styled/StyledPopover.js.map +1 -1
  1171. package/dist/components/styled/StyledTableContainer.js.map +1 -1
  1172. package/dist/components/styled/WideButton.js.map +1 -1
  1173. package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js +39 -42
  1174. package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js.map +1 -1
  1175. package/dist/components/table/CsvPreview/CsvPreview.js.map +1 -1
  1176. package/dist/components/table/CsvPreview/CsvPreviewDialog.js.map +1 -1
  1177. package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js.map +1 -1
  1178. package/dist/components/table/CsvPreview/CsvUploadPreviewContent.js.map +1 -1
  1179. package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.js.map +1 -1
  1180. package/dist/components/table/CsvPreview/useCreateTableFromCsv.js.map +1 -1
  1181. package/dist/components/table/CsvPreview/useCsvUploadPreview.js +11 -11
  1182. package/dist/components/table/CsvPreview/useCsvUploadPreview.js.map +1 -1
  1183. package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.js.map +1 -1
  1184. package/dist/components/table/CsvTableDescriptorForm/CsvTableDescriptorForm.js.map +1 -1
  1185. package/dist/components/trash/TrashCanList.js.map +1 -1
  1186. package/dist/components/utils/Blocker.js.map +1 -1
  1187. package/dist/components/utils/ConditionalWrapper.js.map +1 -1
  1188. package/dist/components/utils/VisibilityObserver.js.map +1 -1
  1189. package/dist/components/widgets/ElementWithTooltip.js.map +1 -1
  1190. package/dist/components/widgets/EntityColumnImage.js.map +1 -1
  1191. package/dist/components/widgets/FileHandleLink.js.map +1 -1
  1192. package/dist/components/widgets/ImageFileHandle.js.map +1 -1
  1193. package/dist/components/widgets/LoginAwareButton.js.map +1 -1
  1194. package/dist/components/widgets/Range.js.map +1 -1
  1195. package/dist/components/widgets/RangeSlider/RangeSlider.js.map +1 -1
  1196. package/dist/components/widgets/SynapseImage.js.map +1 -1
  1197. package/dist/components/widgets/SynapseVideo.js.map +1 -1
  1198. package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
  1199. package/dist/components/widgets/facet-nav/FacetPlotLegendList.js.map +1 -1
  1200. package/dist/components/widgets/facet-nav/FacetPlotLegendTable.js.map +1 -1
  1201. package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.js.map +1 -1
  1202. package/dist/components/widgets/facet-nav/PlotsContainer.js.map +1 -1
  1203. package/dist/components/widgets/facet-nav/PlotsContainerSkeleton.js.map +1 -1
  1204. package/dist/components/widgets/facet-nav/SelectionCriteriaPill.js.map +1 -1
  1205. package/dist/components/widgets/facet-nav/SelectionCriteriaPills.js.map +1 -1
  1206. package/dist/components/widgets/facet-nav/useFacetPlots.js.map +1 -1
  1207. package/dist/components/widgets/query-filter/CombinedRangeFacetFilter.js.map +1 -1
  1208. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js.map +1 -1
  1209. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterDropdown.js.map +1 -1
  1210. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.js.map +1 -1
  1211. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterSkeleton.js.map +1 -1
  1212. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.js.map +1 -1
  1213. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.js.map +1 -1
  1214. package/dist/components/widgets/query-filter/FacetChip.js.map +1 -1
  1215. package/dist/components/widgets/query-filter/FacetFilterControls.js.map +1 -1
  1216. package/dist/components/widgets/query-filter/FacetFilterHeader.js.map +1 -1
  1217. package/dist/components/widgets/query-filter/FacetFilterSkeleton.js.map +1 -1
  1218. package/dist/components/widgets/query-filter/FacetFilterUtils.js.map +1 -1
  1219. package/dist/components/widgets/query-filter/JsonColumnFacetFilters.js.map +1 -1
  1220. package/dist/components/widgets/query-filter/RangeFacetFilter.js +3 -3
  1221. package/dist/components/widgets/query-filter/RangeFacetFilter.js.map +1 -1
  1222. package/dist/components/widgets/query-filter/RangeFacetFilterUI.js +41 -41
  1223. package/dist/components/widgets/query-filter/RangeFacetFilterUI.js.map +1 -1
  1224. package/dist/features/curator/GridPage/GridPage.js.map +1 -1
  1225. package/dist/features/curator/GridPage/components/GridPageRouter.js.map +1 -1
  1226. package/dist/features/curator/GridPage/components/GridPageTitle.js.map +1 -1
  1227. package/dist/features/curator/GridPage/components/UpdateGridPageSearchParamsForm.js.map +1 -1
  1228. package/dist/features/curator/dashboard/CuratorDashboard.js.map +1 -1
  1229. package/dist/features/curator/dashboard/components/CurationTaskCard.js.map +1 -1
  1230. package/dist/features/curator/dashboard/components/NextStepButton.js.map +1 -1
  1231. package/dist/features/curator/dashboard/components/UserOrTeamChip.js.map +1 -1
  1232. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts +5 -0
  1233. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts.map +1 -1
  1234. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js +227 -181
  1235. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js.map +1 -1
  1236. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts.map +1 -1
  1237. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +3 -0
  1238. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
  1239. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js.map +1 -1
  1240. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js.map +1 -1
  1241. package/dist/features/entity/metadata-task/hooks/useGetOrCreateGridSessionForSource.js.map +1 -1
  1242. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js.map +1 -1
  1243. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.js.map +1 -1
  1244. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.d.ts.map +1 -1
  1245. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js +1 -1
  1246. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js.map +1 -1
  1247. package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js.map +1 -1
  1248. package/dist/features/entity/metadata-task/utils/constants.d.ts +5 -0
  1249. package/dist/features/entity/metadata-task/utils/constants.d.ts.map +1 -1
  1250. package/dist/features/entity/metadata-task/utils/constants.js +2 -2
  1251. package/dist/features/entity/metadata-task/utils/constants.js.map +1 -1
  1252. package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.js.map +1 -1
  1253. package/dist/features/entity/metadata-task/utils/getGridSourceIdForTask.js.map +1 -1
  1254. package/dist/features/entity/metadata-task/utils/getLatestGridSessionForSource.js.map +1 -1
  1255. package/dist/features/entity/metadata-task/utils/taskHasAssignee.js.map +1 -1
  1256. package/dist/features/team/invitation/components/OpenInvitationsToUserCard.js.map +1 -1
  1257. package/dist/index.js +54 -53
  1258. package/dist/index.js.map +1 -1
  1259. package/dist/mocks/MockAccessApprovals.js.map +1 -1
  1260. package/dist/mocks/MockSynapseContext.js.map +1 -1
  1261. package/dist/mocks/accessRequirement/mockAccessRequirementAcls.js.map +1 -1
  1262. package/dist/mocks/accessRequirement/mockAccessRequirements.js.map +1 -1
  1263. package/dist/mocks/applicationSessionContext/MockApplicationSessionContext.js.map +1 -1
  1264. package/dist/mocks/challenge/mockChallenge.js.map +1 -1
  1265. package/dist/mocks/chat/mockChat.js.map +1 -1
  1266. package/dist/mocks/curation/mockCurationTask.js.map +1 -1
  1267. package/dist/mocks/dataaccess/MockDataAccessRequest.js.map +1 -1
  1268. package/dist/mocks/dataaccess/MockResearchProject.js.map +1 -1
  1269. package/dist/mocks/dataaccess/MockSubmission.js.map +1 -1
  1270. package/dist/mocks/dataaccess/mockAccessRequest.js.map +1 -1
  1271. package/dist/mocks/discussion/mock_discussion.js.map +1 -1
  1272. package/dist/mocks/doi/MockDoi.js.map +1 -1
  1273. package/dist/mocks/entity/index.js.map +1 -1
  1274. package/dist/mocks/entity/mockDataset.js.map +1 -1
  1275. package/dist/mocks/entity/mockDatasetCollection.js.map +1 -1
  1276. package/dist/mocks/entity/mockEntity.js.map +1 -1
  1277. package/dist/mocks/entity/mockEvaluationQueue.js.map +1 -1
  1278. package/dist/mocks/entity/mockFileEntity.js.map +1 -1
  1279. package/dist/mocks/entity/mockFileEntityACLVariants.js.map +1 -1
  1280. package/dist/mocks/entity/mockFileView.js.map +1 -1
  1281. package/dist/mocks/entity/mockGeneratedEntityData.js.map +1 -1
  1282. package/dist/mocks/entity/mockProject.js.map +1 -1
  1283. package/dist/mocks/entity/mockProjectView.js.map +1 -1
  1284. package/dist/mocks/entity/mockReleaseCardsTable.js.map +1 -1
  1285. package/dist/mocks/entity/mockRootEntity.js.map +1 -1
  1286. package/dist/mocks/entity/mockTableEntity.js.map +1 -1
  1287. package/dist/mocks/faker/fakerUtils.js.map +1 -1
  1288. package/dist/mocks/faker/generateDiscussion.js.map +1 -1
  1289. package/dist/mocks/faker/generateEvaluation.js.map +1 -1
  1290. package/dist/mocks/faker/generateFakeEntity.js.map +1 -1
  1291. package/dist/mocks/faker/generateSubscription.js.map +1 -1
  1292. package/dist/mocks/mockAnnotationColumns.js.map +1 -1
  1293. package/dist/mocks/mockCertificationQuiz.js.map +1 -1
  1294. package/dist/mocks/mockDataCatalogQuery.js.map +1 -1
  1295. package/dist/mocks/mockFileViewQuery.js.map +1 -1
  1296. package/dist/mocks/mockOAuthClientAcls.js.map +1 -1
  1297. package/dist/mocks/mockQueryResponseData.js.map +1 -1
  1298. package/dist/mocks/mockQueryResponseDataWithManyEnumFacets.js.map +1 -1
  1299. package/dist/mocks/mockSchema.js.map +1 -1
  1300. package/dist/mocks/mockSearchQueryData.js +2 -2
  1301. package/dist/mocks/mockSearchQueryData.js.map +1 -1
  1302. package/dist/mocks/mockShortIo.js.map +1 -1
  1303. package/dist/mocks/mockSourceAppConfigQuery.js.map +1 -1
  1304. package/dist/mocks/mockSubscription.js.map +1 -1
  1305. package/dist/mocks/mockWiki.js.map +1 -1
  1306. package/dist/mocks/mockWikiPageKey.js.map +1 -1
  1307. package/dist/mocks/mock_drug_tool_data.js.map +1 -1
  1308. package/dist/mocks/mock_file_handle.js.map +1 -1
  1309. package/dist/mocks/mock_file_statistics.js.map +1 -1
  1310. package/dist/mocks/mock_has_access_data.js.map +1 -1
  1311. package/dist/mocks/mock_upload_destination.js.map +1 -1
  1312. package/dist/mocks/msw/handlers/accessRequirementAclHandlers.js.map +1 -1
  1313. package/dist/mocks/msw/handlers/accessRequirementHandlers.js.map +1 -1
  1314. package/dist/mocks/msw/handlers/asyncJobHandlers.js.map +1 -1
  1315. package/dist/mocks/msw/handlers/authHandlers.js.map +1 -1
  1316. package/dist/mocks/msw/handlers/challengeHandlers.js.map +1 -1
  1317. package/dist/mocks/msw/handlers/changePasswordHandlers.js.map +1 -1
  1318. package/dist/mocks/msw/handlers/chatHandlers.js.map +1 -1
  1319. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js.map +1 -1
  1320. package/dist/mocks/msw/handlers/dataciteHandlers.js.map +1 -1
  1321. package/dist/mocks/msw/handlers/discussionHandlers.js.map +1 -1
  1322. package/dist/mocks/msw/handlers/doiHandlers.js.map +1 -1
  1323. package/dist/mocks/msw/handlers/entityHandlers.js.map +1 -1
  1324. package/dist/mocks/msw/handlers/evaluationHandlers.js.map +1 -1
  1325. package/dist/mocks/msw/handlers/featureFlagHandlers.js.map +1 -1
  1326. package/dist/mocks/msw/handlers/fileHandlers.js.map +1 -1
  1327. package/dist/mocks/msw/handlers/gridHandlers.js.map +1 -1
  1328. package/dist/mocks/msw/handlers/messageHandlers.js.map +1 -1
  1329. package/dist/mocks/msw/handlers/oauthClientAclHandlers.js.map +1 -1
  1330. package/dist/mocks/msw/handlers/personalAccessTokenHandlers.js.map +1 -1
  1331. package/dist/mocks/msw/handlers/projectStorageHandlers.js.map +1 -1
  1332. package/dist/mocks/msw/handlers/realmHandlers.js.map +1 -1
  1333. package/dist/mocks/msw/handlers/researchProjectHandlers.js.map +1 -1
  1334. package/dist/mocks/msw/handlers/resetTwoFactorAuthHandlers.js.map +1 -1
  1335. package/dist/mocks/msw/handlers/schemaHandlers.js.map +1 -1
  1336. package/dist/mocks/msw/handlers/searchQueryHandlers.d.ts +1 -1
  1337. package/dist/mocks/msw/handlers/searchQueryHandlers.d.ts.map +1 -1
  1338. package/dist/mocks/msw/handlers/searchQueryHandlers.js +6 -3
  1339. package/dist/mocks/msw/handlers/searchQueryHandlers.js.map +1 -1
  1340. package/dist/mocks/msw/handlers/shortIoHandlers.js.map +1 -1
  1341. package/dist/mocks/msw/handlers/subscriptionHandlers.js.map +1 -1
  1342. package/dist/mocks/msw/handlers/tableQueryHandlers.js.map +1 -1
  1343. package/dist/mocks/msw/handlers/tableQueryService.js.map +1 -1
  1344. package/dist/mocks/msw/handlers/teamHandlers.js.map +1 -1
  1345. package/dist/mocks/msw/handlers/termsOfServiceHandlers.js.map +1 -1
  1346. package/dist/mocks/msw/handlers/userProfileHandlers.js.map +1 -1
  1347. package/dist/mocks/msw/handlers/webhookHandlers.js.map +1 -1
  1348. package/dist/mocks/msw/handlers/wikiHandlers.js.map +1 -1
  1349. package/dist/mocks/msw/handlers.js.map +1 -1
  1350. package/dist/mocks/msw/server.d.ts +1 -1
  1351. package/dist/mocks/msw/server.d.ts.map +1 -1
  1352. package/dist/mocks/msw/server.js.map +1 -1
  1353. package/dist/mocks/msw/util/BasicMockedCrudService.js.map +1 -1
  1354. package/dist/mocks/oauth/MockClient.js.map +1 -1
  1355. package/dist/mocks/personalAccessToken/mockPersonalAccessToken.js.map +1 -1
  1356. package/dist/mocks/projectStorage/mockProjectStorageLimits.js.map +1 -1
  1357. package/dist/mocks/provenance/mockActivity.js.map +1 -1
  1358. package/dist/mocks/query/defaultFileViewColumnModels.js.map +1 -1
  1359. package/dist/mocks/query/mockFeaturedDataTabsQueryData.js.map +1 -1
  1360. package/dist/mocks/query/mockHomepageQueryResultData.js.map +1 -1
  1361. package/dist/mocks/query/mockProjectViewQueryResults.js.map +1 -1
  1362. package/dist/mocks/query/mockRejectionReasonsTableQueryResultBundle.js.map +1 -1
  1363. package/dist/mocks/query/mockReleaseCardsTableQueryResultBundle.js.map +1 -1
  1364. package/dist/mocks/query/mockUserCardTableQueryResultBundle.d.ts +13 -0
  1365. package/dist/mocks/query/mockUserCardTableQueryResultBundle.d.ts.map +1 -1
  1366. package/dist/mocks/query/mockUserCardTableQueryResultBundle.js +27 -0
  1367. package/dist/mocks/query/mockUserCardTableQueryResultBundle.js.map +1 -1
  1368. package/dist/mocks/query/mock_query_data.js.map +1 -1
  1369. package/dist/mocks/query/syn16787123.js.map +1 -1
  1370. package/dist/mocks/query/syn17328596.js.map +1 -1
  1371. package/dist/mocks/query/syn51735464.js.map +1 -1
  1372. package/dist/mocks/query/syn51735464GroupBySpecies.js.map +1 -1
  1373. package/dist/mocks/realm/mockRealmPrincipal.js.map +1 -1
  1374. package/dist/mocks/team/mockTeam.js.map +1 -1
  1375. package/dist/mocks/termsOfService/mockTermsOfService.js.map +1 -1
  1376. package/dist/mocks/user/mock_user_profile.js.map +1 -1
  1377. package/dist/mocks/usergroup/mockUserGroup.js.map +1 -1
  1378. package/dist/ror-client/index.js.map +1 -1
  1379. package/dist/stories/ColorPaletteInspector.js.map +1 -1
  1380. package/dist/stories/ToastDemo.js.map +1 -1
  1381. package/dist/stories/stubs/Alert/MuiAlert.js.map +1 -1
  1382. package/dist/stories/stubs/Button/MuiButton.js.map +1 -1
  1383. package/dist/stories/stubs/Dialog/MuiDialog.js.map +1 -1
  1384. package/dist/stories/stubs/TextField/MuiTextField.js.map +1 -1
  1385. package/dist/stories/stubs/Tooltip/MuiTooltip.js.map +1 -1
  1386. package/dist/style/components/_cards.scss +10 -0
  1387. package/dist/style/components/_data-grid-extra.css +1 -1
  1388. package/dist/style/components/_data-grid-extra.scss +7 -1
  1389. package/dist/style/main.css +1 -1
  1390. package/dist/synapse-client/HttpClient.js.map +1 -1
  1391. package/dist/synapse-client/SynapseClient.d.ts.map +1 -1
  1392. package/dist/synapse-client/SynapseClient.js +499 -505
  1393. package/dist/synapse-client/SynapseClient.js.map +1 -1
  1394. package/dist/synapse-client/SynapseClientUtils.js.map +1 -1
  1395. package/dist/synapse-queries/InfiniteQueryUtils.js.map +1 -1
  1396. package/dist/synapse-queries/KeyFactory.js.map +1 -1
  1397. package/dist/synapse-queries/QueryFilterUtils.js.map +1 -1
  1398. package/dist/synapse-queries/QueryMatching.test-utils.js.map +1 -1
  1399. package/dist/synapse-queries/asynchronous/usePollAsynchronousJob.js.map +1 -1
  1400. package/dist/synapse-queries/auth/useChangePassword.js.map +1 -1
  1401. package/dist/synapse-queries/auth/useOIDC.js.map +1 -1
  1402. package/dist/synapse-queries/auth/useResetPassword.js.map +1 -1
  1403. package/dist/synapse-queries/auth/useTwoFactorEnrollment.js.map +1 -1
  1404. package/dist/synapse-queries/challenge/useChallenge.js.map +1 -1
  1405. package/dist/synapse-queries/chat/useChat.js.map +1 -1
  1406. package/dist/synapse-queries/croissant/useGetCroissantUrl.js.map +1 -1
  1407. package/dist/synapse-queries/curation/task/useCurationTask.d.ts +1 -0
  1408. package/dist/synapse-queries/curation/task/useCurationTask.d.ts.map +1 -1
  1409. package/dist/synapse-queries/curation/task/useCurationTask.js +12 -2
  1410. package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
  1411. package/dist/synapse-queries/dataaccess/useAccessApprovals.js.map +1 -1
  1412. package/dist/synapse-queries/dataaccess/useAccessRequirements.js.map +1 -1
  1413. package/dist/synapse-queries/dataaccess/useDataAccessSubmission.js.map +1 -1
  1414. package/dist/synapse-queries/dataaccess/useGetApprovedSubmissionInfo.js.map +1 -1
  1415. package/dist/synapse-queries/dataaccess/useRestrictionInformation.js.map +1 -1
  1416. package/dist/synapse-queries/docker/useGetDockerTag.js.map +1 -1
  1417. package/dist/synapse-queries/doi/useDOI.js.map +1 -1
  1418. package/dist/synapse-queries/download/useDownloadList.js.map +1 -1
  1419. package/dist/synapse-queries/entity/useActionsRequiredForTableQuery.js.map +1 -1
  1420. package/dist/synapse-queries/entity/useEntity.js.map +1 -1
  1421. package/dist/synapse-queries/entity/useEntityBoundSchema.js.map +1 -1
  1422. package/dist/synapse-queries/entity/useEntityBundle.js.map +1 -1
  1423. package/dist/synapse-queries/entity/useExportTableQueryToAnalysisPlatform.js.map +1 -1
  1424. package/dist/synapse-queries/entity/useExportToADWorkbench.js.map +1 -1
  1425. package/dist/synapse-queries/entity/useExportToCavatica.js.map +1 -1
  1426. package/dist/synapse-queries/entity/useExportToPluto.js.map +1 -1
  1427. package/dist/synapse-queries/entity/useExportToTerra.js.map +1 -1
  1428. package/dist/synapse-queries/entity/useGetEntityActionsRequired.js.map +1 -1
  1429. package/dist/synapse-queries/entity/useGetEntityChallenge.js.map +1 -1
  1430. package/dist/synapse-queries/entity/useGetEntityChildren.js.map +1 -1
  1431. package/dist/synapse-queries/entity/useGetEntityForum.js.map +1 -1
  1432. package/dist/synapse-queries/entity/useGetEntityHeaders.js.map +1 -1
  1433. package/dist/synapse-queries/entity/useGetQueryResultBundle.js.map +1 -1
  1434. package/dist/synapse-queries/entity/useProjectStorage.js.map +1 -1
  1435. package/dist/synapse-queries/entity/useSchema.js.map +1 -1
  1436. package/dist/synapse-queries/evaluation/useEvaluation.js.map +1 -1
  1437. package/dist/synapse-queries/featureflags/useGetFeatureFlag.js.map +1 -1
  1438. package/dist/synapse-queries/file/UploadToS3.js.map +1 -1
  1439. package/dist/synapse-queries/file/useDirectUploadToS3.js.map +1 -1
  1440. package/dist/synapse-queries/file/useFileHandle.js.map +1 -1
  1441. package/dist/synapse-queries/file/useFiles.js.map +1 -1
  1442. package/dist/synapse-queries/file/useSynapseMultipartUpload.js.map +1 -1
  1443. package/dist/synapse-queries/file/useUploadDestination.js.map +1 -1
  1444. package/dist/synapse-queries/forum/useForum.js.map +1 -1
  1445. package/dist/synapse-queries/forum/useReply.js.map +1 -1
  1446. package/dist/synapse-queries/forum/useThread.js.map +1 -1
  1447. package/dist/synapse-queries/github/useGithub.js.map +1 -1
  1448. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js.map +1 -1
  1449. package/dist/synapse-queries/grid/useExportGrid.js.map +1 -1
  1450. package/dist/synapse-queries/grid/useGridPresignedUrl.js.map +1 -1
  1451. package/dist/synapse-queries/grid/useGridSession.js.map +1 -1
  1452. package/dist/synapse-queries/grid/useImportCsvIntoGrid.js.map +1 -1
  1453. package/dist/synapse-queries/message/useMessage.js.map +1 -1
  1454. package/dist/synapse-queries/oauth/useOAuthClient.js.map +1 -1
  1455. package/dist/synapse-queries/portal/useListPortals.js.map +1 -1
  1456. package/dist/synapse-queries/portal/usePortal.js.map +1 -1
  1457. package/dist/synapse-queries/provenance/useGetActivityForEntity.js.map +1 -1
  1458. package/dist/synapse-queries/realm/useRealmPrincipals.js.map +1 -1
  1459. package/dist/synapse-queries/ror/index.js.map +1 -1
  1460. package/dist/synapse-queries/search/useSearch.js.map +1 -1
  1461. package/dist/synapse-queries/search/useSuggestion.js.map +1 -1
  1462. package/dist/synapse-queries/subscription/useSubscription.js.map +1 -1
  1463. package/dist/synapse-queries/table/useColumnModel.js.map +1 -1
  1464. package/dist/synapse-queries/table/useDefiningSql.js.map +1 -1
  1465. package/dist/synapse-queries/table/useDownloadTable.js.map +1 -1
  1466. package/dist/synapse-queries/table/useGetCsvPreview.js.map +1 -1
  1467. package/dist/synapse-queries/table/useTableUpdateTransaction.js.map +1 -1
  1468. package/dist/synapse-queries/team/useTeam.js.map +1 -1
  1469. package/dist/synapse-queries/team/useTeamList.js.map +1 -1
  1470. package/dist/synapse-queries/team/useTeamMembers.js.map +1 -1
  1471. package/dist/synapse-queries/termsOfService/useTermsOfService.js.map +1 -1
  1472. package/dist/synapse-queries/trash/useTrashCan.js.map +1 -1
  1473. package/dist/synapse-queries/user/useCertificationQuiz.js.map +1 -1
  1474. package/dist/synapse-queries/user/useFavorites.js.map +1 -1
  1475. package/dist/synapse-queries/user/useGetUserChallenges.js.map +1 -1
  1476. package/dist/synapse-queries/user/useGetUserProjects.js.map +1 -1
  1477. package/dist/synapse-queries/user/useGetUserTeams.js.map +1 -1
  1478. package/dist/synapse-queries/user/usePersonalAccessToken.js.map +1 -1
  1479. package/dist/synapse-queries/user/useProjects.js.map +1 -1
  1480. package/dist/synapse-queries/user/useRevokeCertification.js.map +1 -1
  1481. package/dist/synapse-queries/user/useUserBundle.js.map +1 -1
  1482. package/dist/synapse-queries/user/useUserGroupHeader.js.map +1 -1
  1483. package/dist/synapse-queries/verificationSubmission/useVerificationSubmission.js.map +1 -1
  1484. package/dist/synapse-queries/webhook/useWebhook.js.map +1 -1
  1485. package/dist/synapse-queries/wiki/useWiki.js.map +1 -1
  1486. package/dist/testutils/ComponentToBePassedPropsCustomMatcher.js.map +1 -1
  1487. package/dist/testutils/IsEditingStoreTestUtils.js +17 -0
  1488. package/dist/testutils/IsEditingStoreTestUtils.js.map +1 -0
  1489. package/dist/testutils/LocationTracker.js.map +1 -1
  1490. package/dist/testutils/MarkdownSynapseUtils.js.map +1 -1
  1491. package/dist/testutils/ReactQueryMockUtils.js.map +1 -1
  1492. package/dist/testutils/TestingLibraryUtils.js +18 -16
  1493. package/dist/testutils/TestingLibraryUtils.js.map +1 -1
  1494. package/dist/testutils/muiDatePickerMock.js.map +1 -1
  1495. package/dist/testutils/vitest.setup.js.map +1 -1
  1496. package/dist/theme/DefaultTheme.js.map +1 -1
  1497. package/dist/theme/ThemeProvider.js.map +1 -1
  1498. package/dist/theme/mergeTheme.js.map +1 -1
  1499. package/dist/theme/palette/Palettes.js.map +1 -1
  1500. package/dist/theme/spreadSx.js.map +1 -1
  1501. package/dist/theme/typography/Link.js.map +1 -1
  1502. package/dist/theme/typography/Typography.js.map +1 -1
  1503. package/dist/tsconfig.build.tsbuildinfo +1 -1
  1504. package/dist/utils/APIConstants.js.map +1 -1
  1505. package/dist/utils/AppUtils/AppUtils.d.ts.map +1 -1
  1506. package/dist/utils/AppUtils/AppUtils.js +11 -11
  1507. package/dist/utils/AppUtils/AppUtils.js.map +1 -1
  1508. package/dist/utils/AppUtils/session/ApplicationSessionContext.js.map +1 -1
  1509. package/dist/utils/AppUtils/session/ApplicationSessionManager.js.map +1 -1
  1510. package/dist/utils/AppUtils/session/AuthenticationGuard.js.map +1 -1
  1511. package/dist/utils/AppUtils/session/SessionInitializedGuard.js.map +1 -1
  1512. package/dist/utils/AppUtils/session/SynapseSessionManager.js.map +1 -1
  1513. package/dist/utils/AppUtils/session/useSessionManager.js.map +1 -1
  1514. package/dist/utils/ContentTypeUtils.js.map +1 -1
  1515. package/dist/utils/OrientationBannerConstants.js.map +1 -1
  1516. package/dist/utils/PermissionLevelToAccessType.js.map +1 -1
  1517. package/dist/utils/SynapseConstants.js.map +1 -1
  1518. package/dist/utils/analytics/sendAnalyticsEvent.js.map +1 -1
  1519. package/dist/utils/analytics/sendSearchEvent.js.map +1 -1
  1520. package/dist/utils/analytics/useGoogleAnalytics.js.map +1 -1
  1521. package/dist/utils/appendFinalQueryParamKey.js.map +1 -1
  1522. package/dist/utils/challenge/evaluation/EvaluationUtils.js.map +1 -1
  1523. package/dist/utils/context/AridhiaContext.js.map +1 -1
  1524. package/dist/utils/context/DocumentMetadataContext.js.map +1 -1
  1525. package/dist/utils/context/FullContextProvider.js.map +1 -1
  1526. package/dist/utils/context/GlobalIsEditingContext.js.map +1 -1
  1527. package/dist/utils/context/SynapseContext.js.map +1 -1
  1528. package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
  1529. package/dist/utils/functions/AccessControlListUtils.js.map +1 -1
  1530. package/dist/utils/functions/ArrayUtils.js.map +1 -1
  1531. package/dist/utils/functions/DateFormatter.js.map +1 -1
  1532. package/dist/utils/functions/DateTimeUtils.js.map +1 -1
  1533. package/dist/utils/functions/EntityTypeUtils.js.map +1 -1
  1534. package/dist/utils/functions/FileHandleUtils.js.map +1 -1
  1535. package/dist/utils/functions/GridApiUtils.js.map +1 -1
  1536. package/dist/utils/functions/IsEqualTreatUndefinedAsMissing.js.map +1 -1
  1537. package/dist/utils/functions/IsExternalLink.js.map +1 -1
  1538. package/dist/utils/functions/ObjectUtils.js.map +1 -1
  1539. package/dist/utils/functions/QueryFilterUtils.js.map +1 -1
  1540. package/dist/utils/functions/RealmUtils.js.map +1 -1
  1541. package/dist/utils/functions/RegularExpressions.js.map +1 -1
  1542. package/dist/utils/functions/ResolveLinkEntity.js.map +1 -1
  1543. package/dist/utils/functions/SanitizeHtmlUtils.js.map +1 -1
  1544. package/dist/utils/functions/SanitizeHtmlUtils.test-utils.js.map +1 -1
  1545. package/dist/utils/functions/SqlFunctions.js.map +1 -1
  1546. package/dist/utils/functions/StringUtils.js.map +1 -1
  1547. package/dist/utils/functions/TableColumnSchemaUtils.js.map +1 -1
  1548. package/dist/utils/functions/calculateFriendlyFileSize.js.map +1 -1
  1549. package/dist/utils/functions/colorPalette.js.map +1 -1
  1550. package/dist/utils/functions/deepLinkingUtils.js.map +1 -1
  1551. package/dist/utils/functions/dispatchDownloadListChangeEvent.js.map +1 -1
  1552. package/dist/utils/functions/generateCsrfToken.js.map +1 -1
  1553. package/dist/utils/functions/getDataFromFromStorage.js.map +1 -1
  1554. package/dist/utils/functions/getEndpoint.js +3 -3
  1555. package/dist/utils/functions/getEndpoint.js.map +1 -1
  1556. package/dist/utils/functions/getPrincipalDisplayName.js.map +1 -1
  1557. package/dist/utils/functions/getSynapseEntityUrl.js.map +1 -1
  1558. package/dist/utils/functions/getSynapseWebClientLink.js.map +1 -1
  1559. package/dist/utils/functions/getUserData.js.map +1 -1
  1560. package/dist/utils/functions/queryUtils.js.map +1 -1
  1561. package/dist/utils/functions/testDownloadSpeed.js.map +1 -1
  1562. package/dist/utils/functions/unCamelCase.js.map +1 -1
  1563. package/dist/utils/hooks/useConfirmItems.js.map +1 -1
  1564. package/dist/utils/hooks/useCookiePreferences.d.ts.map +1 -1
  1565. package/dist/utils/hooks/useCookiePreferences.js +24 -23
  1566. package/dist/utils/hooks/useCookiePreferences.js.map +1 -1
  1567. package/dist/utils/hooks/useCreateShortUrl.js.map +1 -1
  1568. package/dist/utils/hooks/useDebouncedEffect.js.map +1 -1
  1569. package/dist/utils/hooks/useDetectSSOCode.js.map +1 -1
  1570. package/dist/utils/hooks/useDirectDownloadHandler.js.map +1 -1
  1571. package/dist/utils/hooks/useGetEntityMetadata.js.map +1 -1
  1572. package/dist/utils/hooks/useGetGoalData.js +2 -4
  1573. package/dist/utils/hooks/useGetGoalData.js.map +1 -1
  1574. package/dist/utils/hooks/useGetInfoFromIds.js.map +1 -1
  1575. package/dist/utils/hooks/useGetIsAllSelectedInfiniteList.js.map +1 -1
  1576. package/dist/utils/hooks/useImageUrlUtils.js.map +1 -1
  1577. package/dist/utils/hooks/useImmutableTableQuery/TableQueryReducerActions.js.map +1 -1
  1578. package/dist/utils/hooks/useImmutableTableQuery/useImmutableTableQuery.js.map +1 -1
  1579. package/dist/utils/hooks/useImmutableTableQuery/useTableQueryReducer.js.map +1 -1
  1580. package/dist/utils/hooks/useIsBot.js.map +1 -1
  1581. package/dist/utils/hooks/useJsonLdScriptElement.js.map +1 -1
  1582. package/dist/utils/hooks/useListState.js.map +1 -1
  1583. package/dist/utils/hooks/useLogin.js.map +1 -1
  1584. package/dist/utils/hooks/useMediaPrintOnly.js.map +1 -1
  1585. package/dist/utils/hooks/useMutuallyExclusiveState.js.map +1 -1
  1586. package/dist/utils/hooks/useNativeSearchParams.js.map +1 -1
  1587. package/dist/utils/hooks/useOneSageURL.js.map +1 -1
  1588. package/dist/utils/hooks/useOverlay.js.map +1 -1
  1589. package/dist/utils/hooks/usePreFetchResource.js.map +1 -1
  1590. package/dist/utils/hooks/useQuerySearchParam.js.map +1 -1
  1591. package/dist/utils/hooks/useScrollFadeTransition.js.map +1 -1
  1592. package/dist/utils/hooks/useSet.js.map +1 -1
  1593. package/dist/utils/hooks/useShowDesktop.js.map +1 -1
  1594. package/dist/utils/hooks/useSourceAppConfigs.js.map +1 -1
  1595. package/dist/utils/hooks/useTableImageUrl.js.map +1 -1
  1596. package/dist/utils/hooks/useTraceUpdate.js.map +1 -1
  1597. package/dist/utils/hooks/useTrackTransientListItems.js.map +1 -1
  1598. package/dist/utils/hooks/useUploadFileEntity/getActiveUploadCount.js.map +1 -1
  1599. package/dist/utils/hooks/useUploadFileEntity/getFileEntityIdWithSameName.js.map +1 -1
  1600. package/dist/utils/hooks/useUploadFileEntity/useCreateFolderPath.js.map +1 -1
  1601. package/dist/utils/hooks/useUploadFileEntity/useCreatePathsAndGetParentId.js.map +1 -1
  1602. package/dist/utils/hooks/useUploadFileEntity/useLinkFileEntityToURL.js.map +1 -1
  1603. package/dist/utils/hooks/useUploadFileEntity/usePrepareFileEntityUpload.js.map +1 -1
  1604. package/dist/utils/hooks/useUploadFileEntity/useTrackFileUploads.js.map +1 -1
  1605. package/dist/utils/hooks/useUploadFileEntity/useUploadFileEntities.js.map +1 -1
  1606. package/dist/utils/hooks/useUploadFileEntity/useUploadFiles.js.map +1 -1
  1607. package/dist/utils/hooks/useUploadFileEntity/willUploadsExceedStorageLimit.js.map +1 -1
  1608. package/dist/utils/html/TargetEnum.js.map +1 -1
  1609. package/dist/utils/jsonschema/SchemaAnnotationUtils.js.map +1 -1
  1610. package/dist/utils/jsonschema/getEnumeratedValues.js.map +1 -1
  1611. package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.js.map +1 -1
  1612. package/dist/utils/jsonschema/getRequiredAttributes.js.map +1 -1
  1613. package/dist/utils/jsonschema/getSchemaForProperty.js.map +1 -1
  1614. package/dist/utils/jsonschema/getSchemaPropertyInfo.js.map +1 -1
  1615. package/dist/utils/jsonschema/getType.js.map +1 -1
  1616. package/dist/utils/searchDefaults.js.map +1 -1
  1617. package/dist/utils/slots/SlotUtils.js.map +1 -1
  1618. package/dist/utils/types/IsType.js.map +1 -1
  1619. package/package.json +68 -65
@@ -1 +1 @@
1
- {"version":3,"file":"EntityViewMaskEditor.js","names":[],"sources":["../../../src/components/EntityViewScopeEditor/EntityViewMaskEditor.tsx"],"sourcesContent":["import {\n Alert,\n Checkbox,\n FormControlLabel,\n FormGroup,\n Typography,\n} from '@mui/material'\nimport {\n ENTITY_VIEW_TYPE_MASK_DATASET,\n ENTITY_VIEW_TYPE_MASK_FILE,\n ENTITY_VIEW_TYPE_MASK_FOLDER,\n ENTITY_VIEW_TYPE_MASK_TABLE,\n ENTITY_VIEW_TYPE_MASK_DOCKER,\n} from '@sage-bionetworks/synapse-types'\n\nexport type EntityViewMaskEditorProps = {\n value: number\n onChange: (mask: number) => void\n disabled?: boolean\n}\n\nconst maskLabelPairs: [string, number][] = [\n ['Files', ENTITY_VIEW_TYPE_MASK_FILE],\n ['Folders', ENTITY_VIEW_TYPE_MASK_FOLDER],\n ['Tables', ENTITY_VIEW_TYPE_MASK_TABLE],\n ['Datasets', ENTITY_VIEW_TYPE_MASK_DATASET],\n ['Docker Repositories', ENTITY_VIEW_TYPE_MASK_DOCKER],\n]\n\nexport function isMaskSupportedInUI(value: number) {\n maskLabelPairs.forEach(([, mask]) => {\n // Remove each supported bit\n if ((value & mask) !== 0) {\n value = value - mask\n }\n })\n // If value is not zero, then some unsupported bit remains\n return value === 0\n}\n\nexport default function EntityViewMaskEditor(props: EntityViewMaskEditorProps) {\n const { value, onChange, disabled = false } = props\n\n const customMaskInUse = !isMaskSupportedInUI(value)\n\n return (\n <>\n <Typography\n variant={'body1'}\n sx={{\n mt: 2.5,\n mb: 1.25,\n fontWeight: 700,\n }}\n >\n Include in View\n </Typography>\n <FormGroup sx={{ gap: 1 }}>\n {maskLabelPairs.map(([label, mask]) => (\n <FormControlLabel\n control={<Checkbox />}\n key={label}\n label={label}\n checked={\n // Checked if the mask bit is set\n (value & mask) > 0\n }\n disabled={customMaskInUse || disabled}\n onChange={() => {\n // Toggle the clicked mask value with XOR\n onChange(value ^ mask)\n }}\n />\n ))}\n </FormGroup>\n {customMaskInUse && (\n <Alert severity={'warning'} sx={{ my: 2.25 }}>\n A custom mask is in use. Changes cannot be made in the UI.\n </Alert>\n )}\n </>\n )\n}\n"],"mappings":";;;;AAqBA,IAAM,IAAqC;CACzC,CAAC,SAAS,EAA2B;CACrC,CAAC,WAAW,EAA6B;CACzC,CAAC,UAAU,EAA4B;CACvC,CAAC,YAAY,EAA8B;CAC3C,CAAC,uBAAuB,EAA6B;CACtD;AAED,SAAgB,EAAoB,GAAe;AAQjD,QAPA,EAAe,SAAS,GAAG,OAAU;AAEnC,GAAK,IAAQ,OAAU,MACrB,KAAgB;GAElB,EAEK,MAAU;;AAGnB,SAAwB,EAAqB,GAAkC;CAC7E,IAAM,EAAE,UAAO,aAAU,cAAW,OAAU,GAExC,IAAkB,CAAC,EAAoB,EAAM;AAEnD,QACE,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD;GACE,SAAS;GACT,IAAI;IACF,IAAI;IACJ,IAAI;IACJ,YAAY;IACb;aACF;GAEY,CAAA;EACb,kBAAC,GAAD;GAAW,IAAI,EAAE,KAAK,GAAG;aACtB,EAAe,KAAK,CAAC,GAAO,OAC3B,kBAAC,GAAD;IACE,SAAS,kBAAC,GAAD,EAAY,CAAA;IAEd;IACP,UAEG,IAAQ,KAAQ;IAEnB,UAAU,KAAmB;IAC7B,gBAAgB;AAEd,OAAS,IAAQ,EAAK;;IAExB,EAXK,EAWL,CACF;GACQ,CAAA;EACX,KACC,kBAAC,GAAD;GAAO,UAAU;GAAW,IAAI,EAAE,IAAI,MAAM;aAAE;GAEtC,CAAA;EAET,EAAA,CAAA"}
1
+ {"version":3,"file":"EntityViewMaskEditor.js","names":[],"sources":["../../../src/components/EntityViewScopeEditor/EntityViewMaskEditor.tsx"],"sourcesContent":["import {\n Alert,\n Checkbox,\n FormControlLabel,\n FormGroup,\n Typography,\n} from '@mui/material'\nimport {\n ENTITY_VIEW_TYPE_MASK_DATASET,\n ENTITY_VIEW_TYPE_MASK_FILE,\n ENTITY_VIEW_TYPE_MASK_FOLDER,\n ENTITY_VIEW_TYPE_MASK_TABLE,\n ENTITY_VIEW_TYPE_MASK_DOCKER,\n} from '@sage-bionetworks/synapse-types'\n\nexport type EntityViewMaskEditorProps = {\n value: number\n onChange: (mask: number) => void\n disabled?: boolean\n}\n\nconst maskLabelPairs: [string, number][] = [\n ['Files', ENTITY_VIEW_TYPE_MASK_FILE],\n ['Folders', ENTITY_VIEW_TYPE_MASK_FOLDER],\n ['Tables', ENTITY_VIEW_TYPE_MASK_TABLE],\n ['Datasets', ENTITY_VIEW_TYPE_MASK_DATASET],\n ['Docker Repositories', ENTITY_VIEW_TYPE_MASK_DOCKER],\n]\n\nexport function isMaskSupportedInUI(value: number) {\n maskLabelPairs.forEach(([, mask]) => {\n // Remove each supported bit\n if ((value & mask) !== 0) {\n value = value - mask\n }\n })\n // If value is not zero, then some unsupported bit remains\n return value === 0\n}\n\nexport default function EntityViewMaskEditor(props: EntityViewMaskEditorProps) {\n const { value, onChange, disabled = false } = props\n\n const customMaskInUse = !isMaskSupportedInUI(value)\n\n return (\n <>\n <Typography\n variant={'body1'}\n sx={{\n mt: 2.5,\n mb: 1.25,\n fontWeight: 700,\n }}\n >\n Include in View\n </Typography>\n <FormGroup sx={{ gap: 1 }}>\n {maskLabelPairs.map(([label, mask]) => (\n <FormControlLabel\n control={<Checkbox />}\n key={label}\n label={label}\n checked={\n // Checked if the mask bit is set\n (value & mask) > 0\n }\n disabled={customMaskInUse || disabled}\n onChange={() => {\n // Toggle the clicked mask value with XOR\n onChange(value ^ mask)\n }}\n />\n ))}\n </FormGroup>\n {customMaskInUse && (\n <Alert severity={'warning'} sx={{ my: 2.25 }}>\n A custom mask is in use. Changes cannot be made in the UI.\n </Alert>\n )}\n </>\n )\n}\n"],"mappings":";;;;AAqBA,IAAM,IAAqC;CACzC,CAAC,SAAS,CAA0B;CACpC,CAAC,WAAW,CAA4B;CACxC,CAAC,UAAU,CAA2B;CACtC,CAAC,YAAY,CAA6B;CAC1C,CAAC,uBAAuB,CAA4B;AACtD;AAEA,SAAgB,EAAoB,GAAe;CAQjD,OAPA,EAAe,SAAS,GAAG,OAAU;EAEnC,CAAK,IAAQ,OAAU,MACrB,KAAgB;CAEpB,CAAC,GAEM,MAAU;AACnB;AAEA,SAAwB,EAAqB,GAAkC;CAC7E,IAAM,EAAE,UAAO,aAAU,cAAW,OAAU,GAExC,IAAkB,CAAC,EAAoB,CAAK;CAElD,OACE,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD;GACE,SAAS;GACT,IAAI;IACF,IAAI;IACJ,IAAI;IACJ,YAAY;GACd;aACD;EAEW,CAAA;EACZ,kBAAC,GAAD;GAAW,IAAI,EAAE,KAAK,EAAE;aACrB,EAAe,KAAK,CAAC,GAAO,OAC3B,kBAAC,GAAD;IACE,SAAS,kBAAC,GAAD,CAAW,CAAA;IAEb;IACP,UAEG,IAAQ,KAAQ;IAEnB,UAAU,KAAmB;IAC7B,gBAAgB;KAEd,EAAS,IAAQ,CAAI;IACvB;GACD,GAXM,CAWN,CACF;EACQ,CAAA;EACV,KACC,kBAAC,GAAD;GAAO,UAAU;GAAW,IAAI,EAAE,IAAI,KAAK;aAAG;EAEvC,CAAA;CAET,EAAA,CAAA;AAEN"}
@@ -1 +1 @@
1
- {"version":3,"file":"EntityViewScopeEditor.js","names":[],"sources":["../../../src/components/EntityViewScopeEditor/EntityViewScopeEditor.tsx"],"sourcesContent":["import { EntityTypeGroup } from '@/utils/functions/EntityTypeUtils'\nimport { Typography } from '@mui/material'\nimport { EntityType } from '@sage-bionetworks/synapse-client'\nimport { ReferenceList } from '@sage-bionetworks/synapse-types'\nimport { useMemo } from 'react'\nimport { FinderScope } from '../EntityFinder/tree/EntityTree'\nimport { VersionSelectionType } from '../EntityFinder/VersionSelectionType'\nimport EntityHeaderTable from '../EntityHeaderTable'\n\nconst DEFAULT_SELECTABLE_TYPES = EntityTypeGroup.CONTAINER\nconst PROJECT_VIEW_SELECTABLE_TYPES = [EntityType.project]\n\nexport type EntityViewScopeEditorProps = {\n scopeIds: string[]\n onChange: (scopeIds: string[]) => void\n isProjectView?: boolean\n disabled?: boolean\n}\n\nexport default function EntityViewScopeEditor(\n props: EntityViewScopeEditorProps,\n) {\n const { scopeIds, isProjectView = false, onChange, disabled } = props\n const references: ReferenceList = useMemo(\n () => scopeIds.map(scope => ({ targetId: scope })),\n [scopeIds],\n )\n\n return (\n <>\n <Typography\n variant={'body1'}\n sx={{\n mb: 1.25,\n fontWeight: 700,\n }}\n >\n Scope\n </Typography>\n {scopeIds.length === 0 && (\n <Typography\n variant={'smallText1'}\n sx={{\n color: 'grey.600',\n }}\n >\n Empty! Add items to populate your view\n </Typography>\n )}\n <EntityHeaderTable\n references={references}\n isEditable={true}\n disabled={disabled}\n onUpdate={newReferences => {\n onChange(newReferences.map(ref => ref.targetId))\n }}\n removeSelectedRowsButtonText={'Remove Selected Items from View Scope'}\n objectNameCopy={isProjectView ? 'project' : 'container'}\n hideTextFieldToPasteValue={true}\n entityFinderConfiguration={{\n selectMultiple: true,\n versionSelection: VersionSelectionType.DISALLOWED,\n initialScope: FinderScope.ALL_PROJECTS,\n initialContainer: 'root',\n selectableTypes: isProjectView\n ? PROJECT_VIEW_SELECTABLE_TYPES\n : DEFAULT_SELECTABLE_TYPES,\n }}\n />\n </>\n )\n}\n"],"mappings":";;;;;;;;;AASA,IAAM,IAA2B,EAAgB,WAC3C,IAAgC,CAAC,EAAW,QAAQ;AAS1D,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,aAAU,mBAAgB,IAAO,aAAU,gBAAa,GAC1D,IAA4B,QAC1B,EAAS,KAAI,OAAU,EAAE,UAAU,GAAO,EAAE,EAClD,CAAC,EAAS,CACX;AAED,QACE,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD;GACE,SAAS;GACT,IAAI;IACF,IAAI;IACJ,YAAY;IACb;aACF;GAEY,CAAA;EACZ,EAAS,WAAW,KACnB,kBAAC,GAAD;GACE,SAAS;GACT,IAAI,EACF,OAAO,YACR;aACF;GAEY,CAAA;EAEf,kBAAC,GAAD;GACc;GACZ,YAAY;GACF;GACV,WAAU,MAAiB;AACzB,MAAS,EAAc,KAAI,MAAO,EAAI,SAAS,CAAC;;GAElD,8BAA8B;GAC9B,gBAAgB,IAAgB,YAAY;GAC5C,2BAA2B;GAC3B,2BAA2B;IACzB,gBAAgB;IAChB,kBAAkB,EAAqB;IACvC,cAAc,EAAY;IAC1B,kBAAkB;IAClB,iBAAiB,IACb,IACA;IACL;GACD,CAAA;EACD,EAAA,CAAA"}
1
+ {"version":3,"file":"EntityViewScopeEditor.js","names":[],"sources":["../../../src/components/EntityViewScopeEditor/EntityViewScopeEditor.tsx"],"sourcesContent":["import { EntityTypeGroup } from '@/utils/functions/EntityTypeUtils'\nimport { Typography } from '@mui/material'\nimport { EntityType } from '@sage-bionetworks/synapse-client'\nimport { ReferenceList } from '@sage-bionetworks/synapse-types'\nimport { useMemo } from 'react'\nimport { FinderScope } from '../EntityFinder/tree/EntityTree'\nimport { VersionSelectionType } from '../EntityFinder/VersionSelectionType'\nimport EntityHeaderTable from '../EntityHeaderTable'\n\nconst DEFAULT_SELECTABLE_TYPES = EntityTypeGroup.CONTAINER\nconst PROJECT_VIEW_SELECTABLE_TYPES = [EntityType.project]\n\nexport type EntityViewScopeEditorProps = {\n scopeIds: string[]\n onChange: (scopeIds: string[]) => void\n isProjectView?: boolean\n disabled?: boolean\n}\n\nexport default function EntityViewScopeEditor(\n props: EntityViewScopeEditorProps,\n) {\n const { scopeIds, isProjectView = false, onChange, disabled } = props\n const references: ReferenceList = useMemo(\n () => scopeIds.map(scope => ({ targetId: scope })),\n [scopeIds],\n )\n\n return (\n <>\n <Typography\n variant={'body1'}\n sx={{\n mb: 1.25,\n fontWeight: 700,\n }}\n >\n Scope\n </Typography>\n {scopeIds.length === 0 && (\n <Typography\n variant={'smallText1'}\n sx={{\n color: 'grey.600',\n }}\n >\n Empty! Add items to populate your view\n </Typography>\n )}\n <EntityHeaderTable\n references={references}\n isEditable={true}\n disabled={disabled}\n onUpdate={newReferences => {\n onChange(newReferences.map(ref => ref.targetId))\n }}\n removeSelectedRowsButtonText={'Remove Selected Items from View Scope'}\n objectNameCopy={isProjectView ? 'project' : 'container'}\n hideTextFieldToPasteValue={true}\n entityFinderConfiguration={{\n selectMultiple: true,\n versionSelection: VersionSelectionType.DISALLOWED,\n initialScope: FinderScope.ALL_PROJECTS,\n initialContainer: 'root',\n selectableTypes: isProjectView\n ? PROJECT_VIEW_SELECTABLE_TYPES\n : DEFAULT_SELECTABLE_TYPES,\n }}\n />\n </>\n )\n}\n"],"mappings":";;;;;;;;;AASA,IAAM,IAA2B,EAAgB,WAC3C,IAAgC,CAAC,EAAW,OAAO;AASzD,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,aAAU,mBAAgB,IAAO,aAAU,gBAAa,GAC1D,IAA4B,QAC1B,EAAS,KAAI,OAAU,EAAE,UAAU,EAAM,EAAE,GACjD,CAAC,CAAQ,CACX;CAEA,OACE,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD;GACE,SAAS;GACT,IAAI;IACF,IAAI;IACJ,YAAY;GACd;aACD;EAEW,CAAA;EACX,EAAS,WAAW,KACnB,kBAAC,GAAD;GACE,SAAS;GACT,IAAI,EACF,OAAO,WACT;aACD;EAEW,CAAA;EAEd,kBAAC,GAAD;GACc;GACZ,YAAY;GACF;GACV,WAAU,MAAiB;IACzB,EAAS,EAAc,KAAI,MAAO,EAAI,QAAQ,CAAC;GACjD;GACA,8BAA8B;GAC9B,gBAAgB,IAAgB,YAAY;GAC5C,2BAA2B;GAC3B,2BAA2B;IACzB,gBAAgB;IAChB,kBAAkB,EAAqB;IACvC,cAAc,EAAY;IAC1B,kBAAkB;IAClB,iBAAiB,IACb,IACA;GACN;EACD,CAAA;CACD,EAAA,CAAA;AAEN"}
@@ -1 +1 @@
1
- {"version":3,"file":"EntityViewScopeEditorModal.js","names":[],"sources":["../../../src/components/EntityViewScopeEditor/EntityViewScopeEditorModal.tsx"],"sourcesContent":["import { useGetEntity, useUpdateEntity } from '@/synapse-queries'\nimport { Alert } from '@mui/material'\nimport {\n ENTITY_VIEW_TYPE_MASK_PROJECT,\n EntityView,\n} from '@sage-bionetworks/synapse-types'\nimport { useEffect, useState } from 'react'\nimport ConfirmationDialog from '../ConfirmationDialog'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport EntityViewMaskEditor from './EntityViewMaskEditor'\nimport EntityViewScopeEditor from './EntityViewScopeEditor'\n\nexport type EntityViewScopeEditorModalProps = {\n entityId: string\n onUpdate: () => void\n onCancel: () => void\n open: boolean\n}\n\nexport default function EntityViewScopeEditorModal(\n props: EntityViewScopeEditorModalProps,\n) {\n const { entityId, onCancel, onUpdate, open } = props\n\n const [entityViewScopeIds, setEntityViewScopeIds] = useState<string[]>([])\n const [viewTypeMask, setViewTypeMask] = useState<number>(0)\n\n const isProjectView = viewTypeMask === ENTITY_VIEW_TYPE_MASK_PROJECT\n\n const {\n data: entity,\n isLoading: isEntityLoading,\n error: entityError,\n } = useGetEntity<EntityView>(entityId, undefined, { staleTime: Infinity })\n\n useEffect(() => {\n if (entity) {\n setEntityViewScopeIds(entity.scopeIds)\n setViewTypeMask(entity.viewTypeMask)\n }\n }, [entity])\n\n const {\n mutate,\n isPending: isUpdateLoading,\n error: updateError,\n } = useUpdateEntity<EntityView>({\n onSuccess: onUpdate,\n })\n\n const isLoading = isEntityLoading || isUpdateLoading\n const error = entityError || updateError\n\n return (\n <ConfirmationDialog\n open={open}\n title=\"Edit Scope\"\n content={\n <>\n <EntityViewScopeEditor\n scopeIds={entityViewScopeIds}\n onChange={setEntityViewScopeIds}\n isProjectView={isProjectView}\n disabled={isLoading}\n ></EntityViewScopeEditor>\n {!isProjectView && (\n <EntityViewMaskEditor\n value={viewTypeMask}\n onChange={setViewTypeMask}\n disabled={isLoading}\n ></EntityViewMaskEditor>\n )}\n {error && (\n <Alert\n sx={{\n my: 1,\n }}\n severity=\"error\"\n >\n {error.reason}\n </Alert>\n )}\n </>\n }\n confirmButtonProps={{\n children: isUpdateLoading ? 'Saving...' : 'Save',\n disabled: isLoading,\n startIcon: isUpdateLoading ? <SynapseSpinner /> : undefined,\n }}\n onConfirm={() => {\n if (entity) {\n mutate({\n ...entity,\n viewTypeMask: viewTypeMask,\n scopeIds: entityViewScopeIds,\n })\n }\n }}\n onCancel={onCancel}\n maxWidth=\"md\"\n />\n )\n}\n"],"mappings":";;;;;;;;;;;AAmBA,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,aAAU,aAAU,aAAU,YAAS,GAEzC,CAAC,GAAoB,KAAyB,EAAmB,EAAE,CAAC,EACpE,CAAC,GAAc,KAAmB,EAAiB,EAAE,EAErD,IAAgB,MAAiB,GAEjC,EACJ,MAAM,GACN,WAAW,GACX,OAAO,MACL,EAAyB,GAAU,KAAA,GAAW,EAAE,WAAW,UAAU,CAAC;AAE1E,SAAgB;AACd,EAAI,MACF,EAAsB,EAAO,SAAS,EACtC,EAAgB,EAAO,aAAa;IAErC,CAAC,EAAO,CAAC;CAEZ,IAAM,EACJ,WACA,WAAW,GACX,OAAO,MACL,EAA4B,EAC9B,WAAW,GACZ,CAAC,EAEI,IAAY,KAAmB,GAC/B,IAAQ,KAAe;AAE7B,QACE,kBAAC,GAAD;EACQ;EACN,OAAM;EACN,SACE,kBAAA,GAAA,EAAA,UAAA;GACE,kBAAC,GAAD;IACE,UAAU;IACV,UAAU;IACK;IACf,UAAU;IACa,CAAA;GACxB,CAAC,KACA,kBAAC,GAAD;IACE,OAAO;IACP,UAAU;IACV,UAAU;IACY,CAAA;GAEzB,KACC,kBAAC,GAAD;IACE,IAAI,EACF,IAAI,GACL;IACD,UAAS;cAER,EAAM;IACD,CAAA;GAET,EAAA,CAAA;EAEL,oBAAoB;GAClB,UAAU,IAAkB,cAAc;GAC1C,UAAU;GACV,WAAW,IAAkB,kBAAC,GAAD,EAAkB,CAAA,GAAG,KAAA;GACnD;EACD,iBAAiB;AACf,GAAI,KACF,EAAO;IACL,GAAG;IACW;IACd,UAAU;IACX,CAAC;;EAGI;EACV,UAAS;EACT,CAAA"}
1
+ {"version":3,"file":"EntityViewScopeEditorModal.js","names":[],"sources":["../../../src/components/EntityViewScopeEditor/EntityViewScopeEditorModal.tsx"],"sourcesContent":["import { useGetEntity, useUpdateEntity } from '@/synapse-queries'\nimport { Alert } from '@mui/material'\nimport {\n ENTITY_VIEW_TYPE_MASK_PROJECT,\n EntityView,\n} from '@sage-bionetworks/synapse-types'\nimport { useEffect, useState } from 'react'\nimport ConfirmationDialog from '../ConfirmationDialog'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport EntityViewMaskEditor from './EntityViewMaskEditor'\nimport EntityViewScopeEditor from './EntityViewScopeEditor'\n\nexport type EntityViewScopeEditorModalProps = {\n entityId: string\n onUpdate: () => void\n onCancel: () => void\n open: boolean\n}\n\nexport default function EntityViewScopeEditorModal(\n props: EntityViewScopeEditorModalProps,\n) {\n const { entityId, onCancel, onUpdate, open } = props\n\n const [entityViewScopeIds, setEntityViewScopeIds] = useState<string[]>([])\n const [viewTypeMask, setViewTypeMask] = useState<number>(0)\n\n const isProjectView = viewTypeMask === ENTITY_VIEW_TYPE_MASK_PROJECT\n\n const {\n data: entity,\n isLoading: isEntityLoading,\n error: entityError,\n } = useGetEntity<EntityView>(entityId, undefined, { staleTime: Infinity })\n\n useEffect(() => {\n if (entity) {\n setEntityViewScopeIds(entity.scopeIds)\n setViewTypeMask(entity.viewTypeMask)\n }\n }, [entity])\n\n const {\n mutate,\n isPending: isUpdateLoading,\n error: updateError,\n } = useUpdateEntity<EntityView>({\n onSuccess: onUpdate,\n })\n\n const isLoading = isEntityLoading || isUpdateLoading\n const error = entityError || updateError\n\n return (\n <ConfirmationDialog\n open={open}\n title=\"Edit Scope\"\n content={\n <>\n <EntityViewScopeEditor\n scopeIds={entityViewScopeIds}\n onChange={setEntityViewScopeIds}\n isProjectView={isProjectView}\n disabled={isLoading}\n ></EntityViewScopeEditor>\n {!isProjectView && (\n <EntityViewMaskEditor\n value={viewTypeMask}\n onChange={setViewTypeMask}\n disabled={isLoading}\n ></EntityViewMaskEditor>\n )}\n {error && (\n <Alert\n sx={{\n my: 1,\n }}\n severity=\"error\"\n >\n {error.reason}\n </Alert>\n )}\n </>\n }\n confirmButtonProps={{\n children: isUpdateLoading ? 'Saving...' : 'Save',\n disabled: isLoading,\n startIcon: isUpdateLoading ? <SynapseSpinner /> : undefined,\n }}\n onConfirm={() => {\n if (entity) {\n mutate({\n ...entity,\n viewTypeMask: viewTypeMask,\n scopeIds: entityViewScopeIds,\n })\n }\n }}\n onCancel={onCancel}\n maxWidth=\"md\"\n />\n )\n}\n"],"mappings":";;;;;;;;;;;AAmBA,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,aAAU,aAAU,aAAU,YAAS,GAEzC,CAAC,GAAoB,KAAyB,EAAmB,CAAC,CAAC,GACnE,CAAC,GAAc,KAAmB,EAAiB,CAAC,GAEpD,IAAgB,MAAiB,GAEjC,EACJ,MAAM,GACN,WAAW,GACX,OAAO,MACL,EAAyB,GAAU,KAAA,GAAW,EAAE,WAAW,SAAS,CAAC;CAEzE,QAAgB;EACd,AAAI,MACF,EAAsB,EAAO,QAAQ,GACrC,EAAgB,EAAO,YAAY;CAEvC,GAAG,CAAC,CAAM,CAAC;CAEX,IAAM,EACJ,WACA,WAAW,GACX,OAAO,MACL,EAA4B,EAC9B,WAAW,EACb,CAAC,GAEK,IAAY,KAAmB,GAC/B,IAAQ,KAAe;CAE7B,OACE,kBAAC,GAAD;EACQ;EACN,OAAM;EACN,SACE,kBAAA,GAAA,EAAA,UAAA;GACE,kBAAC,GAAD;IACE,UAAU;IACV,UAAU;IACK;IACf,UAAU;GACY,CAAA;GACvB,CAAC,KACA,kBAAC,GAAD;IACE,OAAO;IACP,UAAU;IACV,UAAU;GACW,CAAA;GAExB,KACC,kBAAC,GAAD;IACE,IAAI,EACF,IAAI,EACN;IACA,UAAS;cAER,EAAM;GACF,CAAA;EAET,EAAA,CAAA;EAEJ,oBAAoB;GAClB,UAAU,IAAkB,cAAc;GAC1C,UAAU;GACV,WAAW,IAAkB,kBAAC,GAAD,CAAiB,CAAA,IAAI,KAAA;EACpD;EACA,iBAAiB;GACf,AAAI,KACF,EAAO;IACL,GAAG;IACW;IACd,UAAU;GACZ,CAAC;EAEL;EACU;EACV,UAAS;CACV,CAAA;AAEL"}
@@ -1 +1 @@
1
- {"version":3,"file":"CreatedOnByUserDiv.js","names":[],"sources":["../../../src/components/Evaluation/CreatedOnByUserDiv.tsx"],"sourcesContent":["import { formatDate } from '@/utils/functions/DateFormatter'\nimport dayjs from 'dayjs'\nimport { UserBadge } from '../UserCard/UserBadge'\n\nexport type CreatedOnByUserDivProps = {\n userId: string\n date: Date\n}\n\nexport function CreatedOnByUserDiv(props: CreatedOnByUserDivProps) {\n const { userId, date } = props\n return (\n <div className=\"created-on\">\n <span>Created on {formatDate(dayjs(date))} by </span>\n <UserBadge userId={userId} />\n </div>\n )\n}\n"],"mappings":";;;;;AASA,SAAgB,EAAmB,GAAgC;CACjE,IAAM,EAAE,WAAQ,YAAS;AACzB,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,QAAD,EAAA,UAAA;GAAM;GAAY,EAAW,EAAM,EAAK,CAAC;GAAC;GAAW,EAAA,CAAA,EACrD,kBAAC,GAAD,EAAmB,WAAU,CAAA,CACzB"}
1
+ {"version":3,"file":"CreatedOnByUserDiv.js","names":[],"sources":["../../../src/components/Evaluation/CreatedOnByUserDiv.tsx"],"sourcesContent":["import { formatDate } from '@/utils/functions/DateFormatter'\nimport dayjs from 'dayjs'\nimport { UserBadge } from '../UserCard/UserBadge'\n\nexport type CreatedOnByUserDivProps = {\n userId: string\n date: Date\n}\n\nexport function CreatedOnByUserDiv(props: CreatedOnByUserDivProps) {\n const { userId, date } = props\n return (\n <div className=\"created-on\">\n <span>Created on {formatDate(dayjs(date))} by </span>\n <UserBadge userId={userId} />\n </div>\n )\n}\n"],"mappings":";;;;;AASA,SAAgB,EAAmB,GAAgC;CACjE,IAAM,EAAE,WAAQ,YAAS;CACzB,OACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,QAAD,EAAA,UAAA;GAAM;GAAY,EAAW,EAAM,CAAI,CAAC;GAAE;EAAU,EAAA,CAAA,GACpD,kBAAC,GAAD,EAAmB,UAAS,CAAA,CACzB;;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"DeleteEvaluationQueueConfirmationDialog.js","names":[],"sources":["../../../src/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.tsx"],"sourcesContent":["import { Checkbox, FormControlLabel, Typography } from '@mui/material'\nimport { useState } from 'react'\nimport WarningDialog from '../SynapseForm/WarningDialog'\n\ntype DeleteEvaluationQueueConfirmationDialogProps = {\n open: boolean\n onConfirm: () => void\n onCancel: () => void\n}\n\nexport function DeleteEvaluationQueueConfirmationDialog({\n open,\n onConfirm,\n onCancel,\n}: DeleteEvaluationQueueConfirmationDialogProps) {\n const [isChecked, setIsChecked] = useState(false)\n\n return (\n <WarningDialog\n title=\"Delete Evaluation Queue?\"\n content={\n <>\n <Typography pb={2}>\n <strong>Warning</strong>: Deleting this evaluation queue will also\n permanently erase all associated submissions and scores. This action\n is irreversible.\n </Typography>\n <FormControlLabel\n control={\n <Checkbox\n checked={isChecked}\n onChange={e => setIsChecked(e.target.checked)}\n />\n }\n label=\"I understand and wish to proceed.\"\n />\n </>\n }\n open={open}\n confirmButtonText=\"Delete\"\n confirmButtonColor=\"error\"\n confirmButtonDisabled={!isChecked}\n onConfirm={onConfirm}\n onCancel={onCancel}\n />\n )\n}\n"],"mappings":";;;;;AAUA,SAAgB,EAAwC,EACtD,SACA,cACA,eAC+C;CAC/C,IAAM,CAAC,GAAW,KAAgB,EAAS,GAAM;AAEjD,QACE,kBAAC,GAAD;EACE,OAAM;EACN,SACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;GAAY,IAAI;aAAhB,CACE,kBAAC,UAAD,EAAA,UAAQ,WAAgB,CAAA,EAAA,mIAGb;MACb,kBAAC,GAAD;GACE,SACE,kBAAC,GAAD;IACE,SAAS;IACT,WAAU,MAAK,EAAa,EAAE,OAAO,QAAQ;IAC7C,CAAA;GAEJ,OAAM;GACN,CAAA,CACD,EAAA,CAAA;EAEC;EACN,mBAAkB;EAClB,oBAAmB;EACnB,uBAAuB,CAAC;EACb;EACD;EACV,CAAA"}
1
+ {"version":3,"file":"DeleteEvaluationQueueConfirmationDialog.js","names":[],"sources":["../../../src/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.tsx"],"sourcesContent":["import { Checkbox, FormControlLabel, Typography } from '@mui/material'\nimport { useState } from 'react'\nimport WarningDialog from '../SynapseForm/WarningDialog'\n\ntype DeleteEvaluationQueueConfirmationDialogProps = {\n open: boolean\n onConfirm: () => void\n onCancel: () => void\n}\n\nexport function DeleteEvaluationQueueConfirmationDialog({\n open,\n onConfirm,\n onCancel,\n}: DeleteEvaluationQueueConfirmationDialogProps) {\n const [isChecked, setIsChecked] = useState(false)\n\n return (\n <WarningDialog\n title=\"Delete Evaluation Queue?\"\n content={\n <>\n <Typography pb={2}>\n <strong>Warning</strong>: Deleting this evaluation queue will also\n permanently erase all associated submissions and scores. This action\n is irreversible.\n </Typography>\n <FormControlLabel\n control={\n <Checkbox\n checked={isChecked}\n onChange={e => setIsChecked(e.target.checked)}\n />\n }\n label=\"I understand and wish to proceed.\"\n />\n </>\n }\n open={open}\n confirmButtonText=\"Delete\"\n confirmButtonColor=\"error\"\n confirmButtonDisabled={!isChecked}\n onConfirm={onConfirm}\n onCancel={onCancel}\n />\n )\n}\n"],"mappings":";;;;;AAUA,SAAgB,EAAwC,EACtD,SACA,cACA,eAC+C;CAC/C,IAAM,CAAC,GAAW,KAAgB,EAAS,EAAK;CAEhD,OACE,kBAAC,GAAD;EACE,OAAM;EACN,SACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;GAAY,IAAI;aAAhB,CACE,kBAAC,UAAD,EAAA,UAAQ,UAAe,CAAA,GAAC,kIAGd;MACZ,kBAAC,GAAD;GACE,SACE,kBAAC,GAAD;IACE,SAAS;IACT,WAAU,MAAK,EAAa,EAAE,OAAO,OAAO;GAC7C,CAAA;GAEH,OAAM;EACP,CAAA,CACD,EAAA,CAAA;EAEE;EACN,mBAAkB;EAClB,oBAAmB;EACnB,uBAAuB,CAAC;EACb;EACD;CACX,CAAA;AAEL"}
@@ -1 +1 @@
1
- {"version":3,"file":"EvaluationCard.js","names":[],"sources":["../../../src/components/Evaluation/EvaluationCard.tsx"],"sourcesContent":["import {\n deleteEvaluation,\n getEvaluationPermissions,\n} from '@/synapse-client/SynapseClient'\nimport { RequiredProperties } from '@/utils'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport {\n Box,\n Button,\n Card,\n CardContent,\n Divider,\n IconButton,\n Menu,\n MenuItem,\n} from '@mui/material'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n Evaluation,\n UserEvaluationPermissions,\n} from '@sage-bionetworks/synapse-types'\nimport { MouseEvent, useEffect, useState } from 'react'\nimport { ErrorBanner } from '../error/ErrorBanner'\nimport IconSvg from '../IconSvg/IconSvg'\nimport { CreatedOnByUserDiv } from './CreatedOnByUserDiv'\nimport { DeleteEvaluationQueueConfirmationDialog } from './DeleteEvaluationQueueConfirmationDialog'\n\nexport type ExistingEvaluation = RequiredProperties<\n Evaluation,\n 'id' | 'etag' | 'createdOn' | 'contentSource' | 'ownerId'\n>\n\nexport type EvaluationCardProps = {\n /** properties of the Evaluation to show*/\n evaluation: ExistingEvaluation\n /** Callback when the Edit option in the dropdown is clicked*/\n onEdit: () => void\n /** Callback when the Modify Access option in the dropdown is clicked*/\n onModifyAccess: () => void\n /** Callback when the Submit button is clicked*/\n onSubmit: () => void\n /** Callback when the Delete option is successful */\n onDeleteSuccess: () => void\n}\n\n/**\n * This component is currently only intended to be used in Synapse.org.\n * For this reason, the dropdown menu items are unimplemented as no components\n * in this project implement their behavior. The dropdown options are also\n * not shown if the current user does not have permissions for the action\n *\n * All Evaluation metadata must be provided to this component; it will not\n * retrieve an Evaluation via a REST API call\n */\nexport function EvaluationCard({\n evaluation,\n onEdit,\n onModifyAccess,\n onSubmit,\n onDeleteSuccess,\n}: EvaluationCardProps) {\n const { accessToken } = useSynapseContext()\n const [error, setError] = useState<SynapseClientError>()\n const [permissions, setPermissions] = useState<UserEvaluationPermissions>()\n\n useEffect(() => {\n //clear error\n setError(undefined)\n\n getEvaluationPermissions(evaluation.id, accessToken)\n .then(retrievedPermissions => {\n setPermissions(retrievedPermissions)\n })\n .catch(error => setError(error))\n }, [evaluation, accessToken])\n\n const onDelete = () => {\n setError(undefined)\n deleteEvaluation(evaluation.id, accessToken)\n .then(onDeleteSuccess)\n .catch(setError)\n }\n\n return (\n <div className=\"evaluation-card\">\n <Card>\n <CardContent sx={{ p: 3 }}>\n {error && <ErrorBanner error={error} />}\n\n {permissions && (\n <>\n <Box sx={{ display: 'flex', justifyContent: 'space-between' }}>\n <label>EVALUATION QUEUE</label>\n <EvaluationCardDropdown\n permissions={permissions}\n onDelete={onDelete}\n onEdit={onEdit}\n onModifyAccess={onModifyAccess}\n />\n </Box>\n\n <h4>\n {evaluation.name} ({evaluation.id})\n </h4>\n\n <label>Description</label>\n <p>{evaluation.description}</p>\n <label>Instructions</label>\n <p>{evaluation.submissionInstructionsMessage}</p>\n <CreatedOnByUserDiv\n userId={evaluation.ownerId}\n date={new Date(evaluation.createdOn)}\n />\n {permissions?.canSubmit && (\n <Button\n className=\"submit-button\"\n color=\"primary\"\n variant=\"contained\"\n onClick={onSubmit}\n >\n Submit\n </Button>\n )}\n </>\n )}\n </CardContent>\n </Card>\n </div>\n )\n}\n\ntype EvaluationCardDropdownProps = {\n permissions: UserEvaluationPermissions\n onEdit: () => void\n onModifyAccess: () => void\n onDelete: () => void\n}\n\nfunction EvaluationCardDropdown({\n permissions,\n onEdit,\n onModifyAccess,\n onDelete,\n}: EvaluationCardDropdownProps) {\n const [deleteWarningShow, setDeleteWarningShow] = useState<boolean>(false)\n\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null)\n const open = Boolean(anchorEl)\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget)\n }\n const handleClose = () => {\n setAnchorEl(null)\n }\n\n if (\n !(\n permissions.canEdit ||\n permissions.canChangePermissions ||\n permissions.canDelete\n )\n ) {\n return null\n }\n return (\n <>\n {permissions?.canDelete && (\n <DeleteEvaluationQueueConfirmationDialog\n key={String(deleteWarningShow)}\n open={deleteWarningShow}\n onConfirm={() => {\n onDelete()\n setDeleteWarningShow(false)\n }}\n onCancel={() => setDeleteWarningShow(false)}\n />\n )}\n <IconButton onClick={handleClick} aria-label=\"Options\">\n <IconSvg icon=\"verticalEllipsis\" wrap={false} />\n </IconButton>\n <Menu\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n slotProps={{ paper: { sx: { minWidth: '120px' } } }}\n >\n {permissions.canEdit && (\n <MenuItem\n role=\"menuitem\"\n onClick={() => {\n handleClose()\n onEdit()\n }}\n >\n Edit\n </MenuItem>\n )}\n {permissions.canChangePermissions && (\n <MenuItem\n role=\"menuitem\"\n onClick={() => {\n handleClose()\n onModifyAccess()\n }}\n >\n Modify Access\n </MenuItem>\n )}\n {/* MUI Menu cannot have a fragment child, so we split the divider and Delete MenuItem into two separate statements */}\n {permissions.canDelete && <Divider />}\n {permissions.canDelete && (\n <MenuItem\n role=\"menuitem\"\n onClick={() => {\n handleClose()\n setDeleteWarningShow(true)\n }}\n >\n Delete\n </MenuItem>\n )}\n </Menu>\n </>\n )\n}\n\nexport default EvaluationCard\n"],"mappings":"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"}
1
+ {"version":3,"file":"EvaluationCard.js","names":[],"sources":["../../../src/components/Evaluation/EvaluationCard.tsx"],"sourcesContent":["import {\n deleteEvaluation,\n getEvaluationPermissions,\n} from '@/synapse-client/SynapseClient'\nimport { RequiredProperties } from '@/utils'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport {\n Box,\n Button,\n Card,\n CardContent,\n Divider,\n IconButton,\n Menu,\n MenuItem,\n} from '@mui/material'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n Evaluation,\n UserEvaluationPermissions,\n} from '@sage-bionetworks/synapse-types'\nimport { MouseEvent, useEffect, useState } from 'react'\nimport { ErrorBanner } from '../error/ErrorBanner'\nimport IconSvg from '../IconSvg/IconSvg'\nimport { CreatedOnByUserDiv } from './CreatedOnByUserDiv'\nimport { DeleteEvaluationQueueConfirmationDialog } from './DeleteEvaluationQueueConfirmationDialog'\n\nexport type ExistingEvaluation = RequiredProperties<\n Evaluation,\n 'id' | 'etag' | 'createdOn' | 'contentSource' | 'ownerId'\n>\n\nexport type EvaluationCardProps = {\n /** properties of the Evaluation to show*/\n evaluation: ExistingEvaluation\n /** Callback when the Edit option in the dropdown is clicked*/\n onEdit: () => void\n /** Callback when the Modify Access option in the dropdown is clicked*/\n onModifyAccess: () => void\n /** Callback when the Submit button is clicked*/\n onSubmit: () => void\n /** Callback when the Delete option is successful */\n onDeleteSuccess: () => void\n}\n\n/**\n * This component is currently only intended to be used in Synapse.org.\n * For this reason, the dropdown menu items are unimplemented as no components\n * in this project implement their behavior. The dropdown options are also\n * not shown if the current user does not have permissions for the action\n *\n * All Evaluation metadata must be provided to this component; it will not\n * retrieve an Evaluation via a REST API call\n */\nexport function EvaluationCard({\n evaluation,\n onEdit,\n onModifyAccess,\n onSubmit,\n onDeleteSuccess,\n}: EvaluationCardProps) {\n const { accessToken } = useSynapseContext()\n const [error, setError] = useState<SynapseClientError>()\n const [permissions, setPermissions] = useState<UserEvaluationPermissions>()\n\n useEffect(() => {\n //clear error\n setError(undefined)\n\n getEvaluationPermissions(evaluation.id, accessToken)\n .then(retrievedPermissions => {\n setPermissions(retrievedPermissions)\n })\n .catch(error => setError(error))\n }, [evaluation, accessToken])\n\n const onDelete = () => {\n setError(undefined)\n deleteEvaluation(evaluation.id, accessToken)\n .then(onDeleteSuccess)\n .catch(setError)\n }\n\n return (\n <div className=\"evaluation-card\">\n <Card>\n <CardContent sx={{ p: 3 }}>\n {error && <ErrorBanner error={error} />}\n\n {permissions && (\n <>\n <Box sx={{ display: 'flex', justifyContent: 'space-between' }}>\n <label>EVALUATION QUEUE</label>\n <EvaluationCardDropdown\n permissions={permissions}\n onDelete={onDelete}\n onEdit={onEdit}\n onModifyAccess={onModifyAccess}\n />\n </Box>\n\n <h4>\n {evaluation.name} ({evaluation.id})\n </h4>\n\n <label>Description</label>\n <p>{evaluation.description}</p>\n <label>Instructions</label>\n <p>{evaluation.submissionInstructionsMessage}</p>\n <CreatedOnByUserDiv\n userId={evaluation.ownerId}\n date={new Date(evaluation.createdOn)}\n />\n {permissions?.canSubmit && (\n <Button\n className=\"submit-button\"\n color=\"primary\"\n variant=\"contained\"\n onClick={onSubmit}\n >\n Submit\n </Button>\n )}\n </>\n )}\n </CardContent>\n </Card>\n </div>\n )\n}\n\ntype EvaluationCardDropdownProps = {\n permissions: UserEvaluationPermissions\n onEdit: () => void\n onModifyAccess: () => void\n onDelete: () => void\n}\n\nfunction EvaluationCardDropdown({\n permissions,\n onEdit,\n onModifyAccess,\n onDelete,\n}: EvaluationCardDropdownProps) {\n const [deleteWarningShow, setDeleteWarningShow] = useState<boolean>(false)\n\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null)\n const open = Boolean(anchorEl)\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget)\n }\n const handleClose = () => {\n setAnchorEl(null)\n }\n\n if (\n !(\n permissions.canEdit ||\n permissions.canChangePermissions ||\n permissions.canDelete\n )\n ) {\n return null\n }\n return (\n <>\n {permissions?.canDelete && (\n <DeleteEvaluationQueueConfirmationDialog\n key={String(deleteWarningShow)}\n open={deleteWarningShow}\n onConfirm={() => {\n onDelete()\n setDeleteWarningShow(false)\n }}\n onCancel={() => setDeleteWarningShow(false)}\n />\n )}\n <IconButton onClick={handleClick} aria-label=\"Options\">\n <IconSvg icon=\"verticalEllipsis\" wrap={false} />\n </IconButton>\n <Menu\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n slotProps={{ paper: { sx: { minWidth: '120px' } } }}\n >\n {permissions.canEdit && (\n <MenuItem\n role=\"menuitem\"\n onClick={() => {\n handleClose()\n onEdit()\n }}\n >\n Edit\n </MenuItem>\n )}\n {permissions.canChangePermissions && (\n <MenuItem\n role=\"menuitem\"\n onClick={() => {\n handleClose()\n onModifyAccess()\n }}\n >\n Modify Access\n </MenuItem>\n )}\n {/* MUI Menu cannot have a fragment child, so we split the divider and Delete MenuItem into two separate statements */}\n {permissions.canDelete && <Divider />}\n {permissions.canDelete && (\n <MenuItem\n role=\"menuitem\"\n onClick={() => {\n handleClose()\n setDeleteWarningShow(true)\n }}\n >\n Delete\n </MenuItem>\n )}\n </Menu>\n </>\n )\n}\n\nexport default EvaluationCard\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"EvaluationEditor.js","names":[],"sources":["../../../src/components/Evaluation/EvaluationEditor.tsx"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { useGlobalIsEditingContext } from '@/utils/context/GlobalIsEditingContext'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport {\n Alert,\n Box,\n Button,\n Divider,\n IconButton,\n Menu,\n MenuItem,\n Stack,\n TextField,\n} from '@mui/material'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport { Evaluation } from '@sage-bionetworks/synapse-types'\nimport { MouseEvent, useEffect, useState } from 'react'\nimport { ErrorBanner } from '../error/ErrorBanner'\nimport IconSvg from '../IconSvg/IconSvg'\nimport { CreatedOnByUserDiv } from './CreatedOnByUserDiv'\nimport { DeleteEvaluationQueueConfirmationDialog } from './DeleteEvaluationQueueConfirmationDialog'\n\nexport type EvaluationEditorProps = {\n /** Use if UPDATING an existing Evaluation. Id of the evaluation to edit */\n readonly evaluationId?: string\n /** Use if CREATING a new Evaluation. Id of the Entity that will be associated with the Evaluation */\n readonly entityId?: string\n /** Callback after successful deletion of the Evaluation */\n readonly onDeleteSuccess: () => void\n /** Callback after successful save of the Evaluation */\n readonly onSaveSuccess?: (evaluationId: string) => void\n}\n\n/**\n * Edits basic properties of an Evaluation\n */\nexport function EvaluationEditor({\n evaluationId,\n entityId,\n onDeleteSuccess,\n onSaveSuccess,\n}: EvaluationEditorProps) {\n if (evaluationId && entityId) {\n throw new Error('please use either evaluationId or entityId but not both')\n }\n const { accessToken } = useSynapseContext()\n const { setIsEditing } = useGlobalIsEditingContext()\n const [isDirty, setIsDirty] = useState(false)\n const [error, setError] = useState<SynapseClientError>()\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 [name, setName] = useState<string>('')\n const [description, setDescription] = useState<string>('')\n const [submissionInstructionsMessage, setSubmissionInstructionsMessage] =\n useState<string>('')\n const [submissionReceiptMessage, setSubmissionReceiptMessage] =\n useState<string>('')\n\n const [evaluation, setEvaluation] = useState<Evaluation>({\n contentSource: entityId,\n })\n\n useEffect(() => {\n setName(evaluation.name ?? '')\n setDescription(evaluation.description ?? '')\n setSubmissionInstructionsMessage(\n evaluation.submissionInstructionsMessage ?? '',\n )\n setSubmissionReceiptMessage(evaluation.submissionReceiptMessage ?? '')\n setIsDirty(false)\n }, [evaluation])\n\n useEffect(() => {\n // if we initially passed in a update the we retrieve a new Evaluation\n if (evaluationId) {\n //clear error\n setError(undefined)\n SynapseClient.getEvaluation(evaluationId, accessToken)\n .then(retrievedEvaluation => {\n setEvaluation(retrievedEvaluation)\n })\n .catch(error => setError(error))\n }\n }, [evaluationId, accessToken])\n\n const onSave = () => {\n // clear out error\n setError(undefined)\n setShowSaveSuccess(false)\n const newOrUpdatedEvaluation: Evaluation = {\n ...evaluation,\n name,\n description,\n submissionInstructionsMessage,\n submissionReceiptMessage,\n }\n\n const promise = newOrUpdatedEvaluation.id\n ? SynapseClient.updateEvaluation(newOrUpdatedEvaluation, accessToken)\n : SynapseClient.createEvaluation(newOrUpdatedEvaluation, accessToken)\n\n promise\n .then(evaluation => {\n setEvaluation(evaluation)\n setIsDirty(false)\n setShowSaveSuccess(true)\n if (onSaveSuccess) {\n onSaveSuccess(evaluation.id!)\n }\n })\n .catch(error => setError(error))\n }\n\n // create delete callback if the evaluation has id\n const onDelete = evaluation?.id\n ? () => {\n setError(undefined)\n SynapseClient.deleteEvaluation(evaluation.id!, accessToken)\n .then(onDeleteSuccess)\n .catch(error => setError(error))\n }\n : undefined\n\n return (\n <div className=\"evaluation-editor\">\n <Box sx={{ display: 'flex', justifyContent: 'space-between' }}>\n <h4>{evaluation.id ? 'Edit' : 'Create'} Evaluation Queue</h4>\n <EvaluationEditorDropdown onClick={onSave} onDelete={onDelete} />\n </Box>\n <Stack\n sx={{\n gap: 2,\n }}\n >\n <TextField\n label={'Name'}\n fullWidth\n value={name}\n onChange={event => {\n setName(event.target.value)\n setIsDirty(true)\n }}\n />\n <TextField\n label={'Description'}\n fullWidth\n multiline\n value={description}\n rows={2}\n onChange={event => {\n setDescription(event.target.value)\n setIsDirty(true)\n }}\n />\n <TextField\n fullWidth\n label={'Submission Instructions'}\n value={submissionInstructionsMessage}\n multiline\n rows={2}\n onChange={event => {\n setSubmissionInstructionsMessage(event.target.value)\n setIsDirty(true)\n }}\n />\n <TextField\n label={'Submission Receipt Message'}\n fullWidth\n value={submissionReceiptMessage}\n onChange={event => {\n setSubmissionReceiptMessage(event.target.value)\n setIsDirty(true)\n }}\n />\n {evaluation?.createdOn && (\n <CreatedOnByUserDiv\n userId={evaluation.ownerId!}\n date={new Date(evaluation.createdOn)}\n />\n )}\n {error && <ErrorBanner error={error} />}\n {showSaveSuccess && (\n <Alert\n className=\"save-success-alert\"\n severity=\"success\"\n onClose={() => setShowSaveSuccess(false)}\n sx={{ marginBottom: '20px' }}\n >\n Successfully saved.\n </Alert>\n )}\n <Box sx={{ mb: 3, alignSelf: 'flex-end' }}>\n <Button\n variant=\"contained\"\n color=\"primary\"\n className=\"save-button\"\n onClick={onSave}\n >\n Save\n </Button>\n </Box>\n </Stack>\n </div>\n )\n}\n\ntype EvaluationEditorDropdownProps = {\n onClick: () => void\n onDelete?: () => void\n}\n\nfunction EvaluationEditorDropdown({\n onClick,\n onDelete,\n}: EvaluationEditorDropdownProps) {\n const [deleteWarningShow, setDeleteWarningShow] = useState<boolean>(false)\n const [menuAnchorEl, setMenuAnchorEl] = useState<null | HTMLElement>(null)\n const isContextMenuOpen = Boolean(menuAnchorEl)\n const handleMenuClick = (event: MouseEvent<HTMLButtonElement>) => {\n setMenuAnchorEl(event.currentTarget)\n }\n const handleMenuClose = () => {\n setMenuAnchorEl(null)\n }\n\n return (\n <>\n {onDelete && (\n <DeleteEvaluationQueueConfirmationDialog\n key={String(deleteWarningShow)}\n open={deleteWarningShow}\n onConfirm={() => {\n onDelete()\n setDeleteWarningShow(false)\n }}\n onCancel={() => setDeleteWarningShow(false)}\n />\n )}\n\n <IconButton onClick={handleMenuClick}>\n <IconSvg icon=\"verticalEllipsis\" wrap={false} />\n </IconButton>\n <Menu\n anchorEl={menuAnchorEl}\n open={isContextMenuOpen}\n onClose={handleMenuClose}\n slotProps={{ paper: { sx: { minWidth: '120px' } } }}\n >\n <MenuItem\n onClick={() => {\n handleMenuClose()\n onClick()\n }}\n >\n Save\n </MenuItem>\n {onDelete && <Divider />}\n {onDelete && (\n <MenuItem\n onClick={() => {\n handleMenuClose()\n setDeleteWarningShow(true)\n }}\n >\n Delete\n </MenuItem>\n )}\n </Menu>\n </>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"EvaluationEditor.js","names":[],"sources":["../../../src/components/Evaluation/EvaluationEditor.tsx"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { useGlobalIsEditingContext } from '@/utils/context/GlobalIsEditingContext'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport {\n Alert,\n Box,\n Button,\n Divider,\n IconButton,\n Menu,\n MenuItem,\n Stack,\n TextField,\n} from '@mui/material'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport { Evaluation } from '@sage-bionetworks/synapse-types'\nimport { MouseEvent, useEffect, useState } from 'react'\nimport { ErrorBanner } from '../error/ErrorBanner'\nimport IconSvg from '../IconSvg/IconSvg'\nimport { CreatedOnByUserDiv } from './CreatedOnByUserDiv'\nimport { DeleteEvaluationQueueConfirmationDialog } from './DeleteEvaluationQueueConfirmationDialog'\n\nexport type EvaluationEditorProps = {\n /** Use if UPDATING an existing Evaluation. Id of the evaluation to edit */\n readonly evaluationId?: string\n /** Use if CREATING a new Evaluation. Id of the Entity that will be associated with the Evaluation */\n readonly entityId?: string\n /** Callback after successful deletion of the Evaluation */\n readonly onDeleteSuccess: () => void\n /** Callback after successful save of the Evaluation */\n readonly onSaveSuccess?: (evaluationId: string) => void\n}\n\n/**\n * Edits basic properties of an Evaluation\n */\nexport function EvaluationEditor({\n evaluationId,\n entityId,\n onDeleteSuccess,\n onSaveSuccess,\n}: EvaluationEditorProps) {\n if (evaluationId && entityId) {\n throw new Error('please use either evaluationId or entityId but not both')\n }\n const { accessToken } = useSynapseContext()\n const { setIsEditing } = useGlobalIsEditingContext()\n const [isDirty, setIsDirty] = useState(false)\n const [error, setError] = useState<SynapseClientError>()\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 [name, setName] = useState<string>('')\n const [description, setDescription] = useState<string>('')\n const [submissionInstructionsMessage, setSubmissionInstructionsMessage] =\n useState<string>('')\n const [submissionReceiptMessage, setSubmissionReceiptMessage] =\n useState<string>('')\n\n const [evaluation, setEvaluation] = useState<Evaluation>({\n contentSource: entityId,\n })\n\n useEffect(() => {\n setName(evaluation.name ?? '')\n setDescription(evaluation.description ?? '')\n setSubmissionInstructionsMessage(\n evaluation.submissionInstructionsMessage ?? '',\n )\n setSubmissionReceiptMessage(evaluation.submissionReceiptMessage ?? '')\n setIsDirty(false)\n }, [evaluation])\n\n useEffect(() => {\n // if we initially passed in a update the we retrieve a new Evaluation\n if (evaluationId) {\n //clear error\n setError(undefined)\n SynapseClient.getEvaluation(evaluationId, accessToken)\n .then(retrievedEvaluation => {\n setEvaluation(retrievedEvaluation)\n })\n .catch(error => setError(error))\n }\n }, [evaluationId, accessToken])\n\n const onSave = () => {\n // clear out error\n setError(undefined)\n setShowSaveSuccess(false)\n const newOrUpdatedEvaluation: Evaluation = {\n ...evaluation,\n name,\n description,\n submissionInstructionsMessage,\n submissionReceiptMessage,\n }\n\n const promise = newOrUpdatedEvaluation.id\n ? SynapseClient.updateEvaluation(newOrUpdatedEvaluation, accessToken)\n : SynapseClient.createEvaluation(newOrUpdatedEvaluation, accessToken)\n\n promise\n .then(evaluation => {\n setEvaluation(evaluation)\n setIsDirty(false)\n setShowSaveSuccess(true)\n if (onSaveSuccess) {\n onSaveSuccess(evaluation.id!)\n }\n })\n .catch(error => setError(error))\n }\n\n // create delete callback if the evaluation has id\n const onDelete = evaluation?.id\n ? () => {\n setError(undefined)\n SynapseClient.deleteEvaluation(evaluation.id!, accessToken)\n .then(onDeleteSuccess)\n .catch(error => setError(error))\n }\n : undefined\n\n return (\n <div className=\"evaluation-editor\">\n <Box sx={{ display: 'flex', justifyContent: 'space-between' }}>\n <h4>{evaluation.id ? 'Edit' : 'Create'} Evaluation Queue</h4>\n <EvaluationEditorDropdown onClick={onSave} onDelete={onDelete} />\n </Box>\n <Stack\n sx={{\n gap: 2,\n }}\n >\n <TextField\n label={'Name'}\n fullWidth\n value={name}\n onChange={event => {\n setName(event.target.value)\n setIsDirty(true)\n }}\n />\n <TextField\n label={'Description'}\n fullWidth\n multiline\n value={description}\n rows={2}\n onChange={event => {\n setDescription(event.target.value)\n setIsDirty(true)\n }}\n />\n <TextField\n fullWidth\n label={'Submission Instructions'}\n value={submissionInstructionsMessage}\n multiline\n rows={2}\n onChange={event => {\n setSubmissionInstructionsMessage(event.target.value)\n setIsDirty(true)\n }}\n />\n <TextField\n label={'Submission Receipt Message'}\n fullWidth\n value={submissionReceiptMessage}\n onChange={event => {\n setSubmissionReceiptMessage(event.target.value)\n setIsDirty(true)\n }}\n />\n {evaluation?.createdOn && (\n <CreatedOnByUserDiv\n userId={evaluation.ownerId!}\n date={new Date(evaluation.createdOn)}\n />\n )}\n {error && <ErrorBanner error={error} />}\n {showSaveSuccess && (\n <Alert\n className=\"save-success-alert\"\n severity=\"success\"\n onClose={() => setShowSaveSuccess(false)}\n sx={{ marginBottom: '20px' }}\n >\n Successfully saved.\n </Alert>\n )}\n <Box sx={{ mb: 3, alignSelf: 'flex-end' }}>\n <Button\n variant=\"contained\"\n color=\"primary\"\n className=\"save-button\"\n onClick={onSave}\n >\n Save\n </Button>\n </Box>\n </Stack>\n </div>\n )\n}\n\ntype EvaluationEditorDropdownProps = {\n onClick: () => void\n onDelete?: () => void\n}\n\nfunction EvaluationEditorDropdown({\n onClick,\n onDelete,\n}: EvaluationEditorDropdownProps) {\n const [deleteWarningShow, setDeleteWarningShow] = useState<boolean>(false)\n const [menuAnchorEl, setMenuAnchorEl] = useState<null | HTMLElement>(null)\n const isContextMenuOpen = Boolean(menuAnchorEl)\n const handleMenuClick = (event: MouseEvent<HTMLButtonElement>) => {\n setMenuAnchorEl(event.currentTarget)\n }\n const handleMenuClose = () => {\n setMenuAnchorEl(null)\n }\n\n return (\n <>\n {onDelete && (\n <DeleteEvaluationQueueConfirmationDialog\n key={String(deleteWarningShow)}\n open={deleteWarningShow}\n onConfirm={() => {\n onDelete()\n setDeleteWarningShow(false)\n }}\n onCancel={() => setDeleteWarningShow(false)}\n />\n )}\n\n <IconButton onClick={handleMenuClick}>\n <IconSvg icon=\"verticalEllipsis\" wrap={false} />\n </IconButton>\n <Menu\n anchorEl={menuAnchorEl}\n open={isContextMenuOpen}\n onClose={handleMenuClose}\n slotProps={{ paper: { sx: { minWidth: '120px' } } }}\n >\n <MenuItem\n onClick={() => {\n handleMenuClose()\n onClick()\n }}\n >\n Save\n </MenuItem>\n {onDelete && <Divider />}\n {onDelete && (\n <MenuItem\n onClick={() => {\n handleMenuClose()\n setDeleteWarningShow(true)\n }}\n >\n Delete\n </MenuItem>\n )}\n </Menu>\n </>\n )\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"EvaluationEditorPage.js","names":[],"sources":["../../../src/components/Evaluation/EvaluationEditorPage.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { EvaluationEditor } from './EvaluationEditor'\nimport { EvaluationRoundEditorList } from './EvaluationRoundEditorList'\nimport { Alert, Button } from '@mui/material'\n\nexport type EvaluationEditorPageProps = {\n /** Use if UPDATING an existing Evaluation. Id of the evaluation to edit */\n readonly evaluationId?: string\n /** Use if CREATING a new Evaluation. Id of the Entity that will be associated with the Evaluation */\n readonly entityId?: string\n /** Callback after successful deletion of the Evaluation */\n readonly onDeleteSuccess: () => void\n}\n\n/**\n * Combined editor that allows editing an Evaluation's data and also it's associated rounds (once the Evaluation exists on Synapse)\n */\nexport function EvaluationEditorPage({\n evaluationId,\n entityId,\n onDeleteSuccess,\n}: EvaluationEditorPageProps) {\n const [savedEvaluationId, setSavedEvaluationId] = useState<\n string | undefined\n >(evaluationId)\n return (\n <div>\n <EvaluationEditor\n evaluationId={savedEvaluationId}\n //do not use entityId if we already have the evaluation Id\n entityId={savedEvaluationId ? undefined : entityId}\n onDeleteSuccess={onDeleteSuccess}\n onSaveSuccess={setSavedEvaluationId}\n />\n\n <div className=\"my-4\">\n {savedEvaluationId ? (\n <EvaluationRoundEditorList evaluationId={savedEvaluationId} />\n ) : (\n // shows an alert informing user to first create an Evaluation if they\n // click the \"Add Round\" button\n <FakeEvaluationRoundEditorList />\n )}\n </div>\n </div>\n )\n}\n\n/**\n * special case handling when the evaluation has not been created yet (i.e. does not exist)\n * in this case, we show a fake \"add round\" button that when clicked, will\n * display an alert telling the user to first create an Evaluation\n *\n * Note: an alternative would be to modify the existing EvaluationRoundEditorList\n * to accept a nullable evaluationId (i.e. `string?` instead of `string`)\n * so that we can move this fake Alert functionality into it.\n *\n * Since the \"uncreated Evaluation\" edge case is currently only specific to the EvaluationEditorPage,\n * I believe adopting this alternative would add unnecessary complexity,\n * forcing EvaluationRoundEditorList to handle undefined `evaluationId`.\n */\nfunction FakeEvaluationRoundEditorList() {\n const [showEvaluationNotExistAlert, setShowEvaluationNotExistAlert] =\n useState<boolean>(false)\n\n return (\n <div data-testid=\"FakeEvaluationRoundEditorList\">\n {showEvaluationNotExistAlert ? (\n <Alert severity={'info'}>\n Evaluation Rounds can be edited once the Evaluation has been created.\n </Alert>\n ) : (\n <Button\n className=\"add-round-button\"\n variant=\"contained\"\n color=\"primary\"\n onClick={() => {\n setShowEvaluationNotExistAlert(true)\n }}\n >\n Add Round\n </Button>\n )}\n </div>\n )\n}\n\nexport const HelpersToTest = {\n FakeEvaluationRoundEditorList,\n}\n\nexport default EvaluationEditorPage\n"],"mappings":";;;;;;AAiBA,SAAgB,EAAqB,EACnC,iBACA,aACA,sBAC4B;CAC5B,IAAM,CAAC,GAAmB,KAAwB,EAEhD,EAAa;AACf,QACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,GAAD;EACE,cAAc;EAEd,UAAU,IAAoB,KAAA,IAAY;EACzB;EACjB,eAAe;EACf,CAAA,EAEF,kBAAC,OAAD;EAAK,WAAU;YACZ,IACC,kBAAC,GAAD,EAA2B,cAAc,GAAqB,CAAA,GAI9D,kBAAC,GAAD,EAAiC,CAAA;EAE/B,CAAA,CACF,EAAA,CAAA;;AAiBV,SAAS,IAAgC;CACvC,IAAM,CAAC,GAA6B,KAClC,EAAkB,GAAM;AAE1B,QACE,kBAAC,OAAD;EAAK,eAAY;YACd,IACC,kBAAC,GAAD;GAAO,UAAU;aAAQ;GAEjB,CAAA,GAER,kBAAC,GAAD;GACE,WAAU;GACV,SAAQ;GACR,OAAM;GACN,eAAe;AACb,MAA+B,GAAK;;aAEvC;GAEQ,CAAA;EAEP,CAAA;;AAIV,IAAa,IAAgB,EAC3B,kCACD"}
1
+ {"version":3,"file":"EvaluationEditorPage.js","names":[],"sources":["../../../src/components/Evaluation/EvaluationEditorPage.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { EvaluationEditor } from './EvaluationEditor'\nimport { EvaluationRoundEditorList } from './EvaluationRoundEditorList'\nimport { Alert, Button } from '@mui/material'\n\nexport type EvaluationEditorPageProps = {\n /** Use if UPDATING an existing Evaluation. Id of the evaluation to edit */\n readonly evaluationId?: string\n /** Use if CREATING a new Evaluation. Id of the Entity that will be associated with the Evaluation */\n readonly entityId?: string\n /** Callback after successful deletion of the Evaluation */\n readonly onDeleteSuccess: () => void\n}\n\n/**\n * Combined editor that allows editing an Evaluation's data and also it's associated rounds (once the Evaluation exists on Synapse)\n */\nexport function EvaluationEditorPage({\n evaluationId,\n entityId,\n onDeleteSuccess,\n}: EvaluationEditorPageProps) {\n const [savedEvaluationId, setSavedEvaluationId] = useState<\n string | undefined\n >(evaluationId)\n return (\n <div>\n <EvaluationEditor\n evaluationId={savedEvaluationId}\n //do not use entityId if we already have the evaluation Id\n entityId={savedEvaluationId ? undefined : entityId}\n onDeleteSuccess={onDeleteSuccess}\n onSaveSuccess={setSavedEvaluationId}\n />\n\n <div className=\"my-4\">\n {savedEvaluationId ? (\n <EvaluationRoundEditorList evaluationId={savedEvaluationId} />\n ) : (\n // shows an alert informing user to first create an Evaluation if they\n // click the \"Add Round\" button\n <FakeEvaluationRoundEditorList />\n )}\n </div>\n </div>\n )\n}\n\n/**\n * special case handling when the evaluation has not been created yet (i.e. does not exist)\n * in this case, we show a fake \"add round\" button that when clicked, will\n * display an alert telling the user to first create an Evaluation\n *\n * Note: an alternative would be to modify the existing EvaluationRoundEditorList\n * to accept a nullable evaluationId (i.e. `string?` instead of `string`)\n * so that we can move this fake Alert functionality into it.\n *\n * Since the \"uncreated Evaluation\" edge case is currently only specific to the EvaluationEditorPage,\n * I believe adopting this alternative would add unnecessary complexity,\n * forcing EvaluationRoundEditorList to handle undefined `evaluationId`.\n */\nfunction FakeEvaluationRoundEditorList() {\n const [showEvaluationNotExistAlert, setShowEvaluationNotExistAlert] =\n useState<boolean>(false)\n\n return (\n <div data-testid=\"FakeEvaluationRoundEditorList\">\n {showEvaluationNotExistAlert ? (\n <Alert severity={'info'}>\n Evaluation Rounds can be edited once the Evaluation has been created.\n </Alert>\n ) : (\n <Button\n className=\"add-round-button\"\n variant=\"contained\"\n color=\"primary\"\n onClick={() => {\n setShowEvaluationNotExistAlert(true)\n }}\n >\n Add Round\n </Button>\n )}\n </div>\n )\n}\n\nexport const HelpersToTest = {\n FakeEvaluationRoundEditorList,\n}\n\nexport default EvaluationEditorPage\n"],"mappings":";;;;;;AAiBA,SAAgB,EAAqB,EACnC,iBACA,aACA,sBAC4B;CAC5B,IAAM,CAAC,GAAmB,KAAwB,EAEhD,CAAY;CACd,OACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,GAAD;EACE,cAAc;EAEd,UAAU,IAAoB,KAAA,IAAY;EACzB;EACjB,eAAe;CAChB,CAAA,GAED,kBAAC,OAAD;EAAK,WAAU;YACZ,IACC,kBAAC,GAAD,EAA2B,cAAc,EAAoB,CAAA,IAI7D,kBAAC,GAAD,CAAgC,CAAA;CAE/B,CAAA,CACF,EAAA,CAAA;AAET;AAeA,SAAS,IAAgC;CACvC,IAAM,CAAC,GAA6B,KAClC,EAAkB,EAAK;CAEzB,OACE,kBAAC,OAAD;EAAK,eAAY;YACd,IACC,kBAAC,GAAD;GAAO,UAAU;aAAQ;EAElB,CAAA,IAEP,kBAAC,GAAD;GACE,WAAU;GACV,SAAQ;GACR,OAAM;GACN,eAAe;IACb,EAA+B,EAAI;GACrC;aACD;EAEO,CAAA;CAEP,CAAA;AAET;AAEA,IAAa,IAAgB,EAC3B,iCACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"EvaluationRoundEditor.js","names":[],"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"],"mappings":"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"}
1
+ {"version":3,"file":"EvaluationRoundEditor.js","names":[],"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"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"EvaluationRoundEditorDropdown.js","names":[],"sources":["../../../src/components/Evaluation/EvaluationRoundEditorDropdown.tsx"],"sourcesContent":["import { Divider, IconButton, Menu, MenuItem } from '@mui/material'\nimport { MouseEvent, useState } from 'react'\nimport IconSvg from '../IconSvg/IconSvg'\nimport WarningDialog from '../SynapseForm/WarningDialog'\n\nexport type EvaluationRoundEditorDropdownProps = {\n onDelete: () => void\n onSave: () => void\n}\n\nexport function EvaluationRoundEditorDropdown({\n onSave,\n onDelete,\n}: EvaluationRoundEditorDropdownProps) {\n const [deleteWarningShow, setDeleteWarningShow] = useState<boolean>(false)\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null)\n const open = Boolean(anchorEl)\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget)\n }\n const handleClose = () => {\n setAnchorEl(null)\n }\n\n return (\n <>\n <WarningDialog\n title=\"Delete Evaluation Round\"\n content=\"Are you sure you want to delete this Evaluation Round?\"\n open={deleteWarningShow}\n confirmButtonText=\"Delete\"\n onConfirm={() => {\n onDelete()\n setDeleteWarningShow(false)\n }}\n onConfirmCallbackArgs={[]}\n onCancel={() => {\n setDeleteWarningShow(false)\n }}\n confirmButtonColor=\"error\"\n />\n <IconButton onClick={handleClick} aria-label=\"Round Options\">\n <IconSvg icon=\"verticalEllipsis\" wrap={false} />\n </IconButton>\n <Menu\n aria-label=\"Round Options\"\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n slotProps={{ paper: { sx: { minWidth: '120px' } } }}\n >\n <MenuItem\n onClick={() => {\n handleClose()\n onSave()\n }}\n >\n Save\n </MenuItem>\n <Divider />\n <MenuItem\n onClick={() => {\n handleClose()\n setDeleteWarningShow(true)\n }}\n >\n Delete\n </MenuItem>\n </Menu>\n </>\n )\n}\n"],"mappings":";;;;;;AAUA,SAAgB,EAA8B,EAC5C,WACA,eACqC;CACrC,IAAM,CAAC,GAAmB,KAAwB,EAAkB,GAAM,EACpE,CAAC,GAAU,KAAe,EAA6B,KAAK,EAC5D,IAAO,EAAQ,GACf,KAAe,MAAmC;AACtD,IAAY,EAAM,cAAc;IAE5B,UAAoB;AACxB,IAAY,KAAK;;AAGnB,QACE,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD;GACE,OAAM;GACN,SAAQ;GACR,MAAM;GACN,mBAAkB;GAClB,iBAAiB;AAEf,IADA,GAAU,EACV,EAAqB,GAAM;;GAE7B,uBAAuB,EAAE;GACzB,gBAAgB;AACd,MAAqB,GAAM;;GAE7B,oBAAmB;GACnB,CAAA;EACF,kBAAC,GAAD;GAAY,SAAS;GAAa,cAAW;aAC3C,kBAAC,GAAD;IAAS,MAAK;IAAmB,MAAM;IAAS,CAAA;GACrC,CAAA;EACb,kBAAC,GAAD;GACE,cAAW;GACD;GACJ;GACN,SAAS;GACT,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,SAAS,EAAE,EAAE;aALrD;IAOE,kBAAC,GAAD;KACE,eAAe;AAEb,MADA,GAAa,EACb,GAAQ;;eAEX;KAEU,CAAA;IACX,kBAAC,GAAD,EAAW,CAAA;IACX,kBAAC,GAAD;KACE,eAAe;AAEb,MADA,GAAa,EACb,EAAqB,GAAK;;eAE7B;KAEU,CAAA;IACN;;EACN,EAAA,CAAA"}
1
+ {"version":3,"file":"EvaluationRoundEditorDropdown.js","names":[],"sources":["../../../src/components/Evaluation/EvaluationRoundEditorDropdown.tsx"],"sourcesContent":["import { Divider, IconButton, Menu, MenuItem } from '@mui/material'\nimport { MouseEvent, useState } from 'react'\nimport IconSvg from '../IconSvg/IconSvg'\nimport WarningDialog from '../SynapseForm/WarningDialog'\n\nexport type EvaluationRoundEditorDropdownProps = {\n onDelete: () => void\n onSave: () => void\n}\n\nexport function EvaluationRoundEditorDropdown({\n onSave,\n onDelete,\n}: EvaluationRoundEditorDropdownProps) {\n const [deleteWarningShow, setDeleteWarningShow] = useState<boolean>(false)\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null)\n const open = Boolean(anchorEl)\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget)\n }\n const handleClose = () => {\n setAnchorEl(null)\n }\n\n return (\n <>\n <WarningDialog\n title=\"Delete Evaluation Round\"\n content=\"Are you sure you want to delete this Evaluation Round?\"\n open={deleteWarningShow}\n confirmButtonText=\"Delete\"\n onConfirm={() => {\n onDelete()\n setDeleteWarningShow(false)\n }}\n onConfirmCallbackArgs={[]}\n onCancel={() => {\n setDeleteWarningShow(false)\n }}\n confirmButtonColor=\"error\"\n />\n <IconButton onClick={handleClick} aria-label=\"Round Options\">\n <IconSvg icon=\"verticalEllipsis\" wrap={false} />\n </IconButton>\n <Menu\n aria-label=\"Round Options\"\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n slotProps={{ paper: { sx: { minWidth: '120px' } } }}\n >\n <MenuItem\n onClick={() => {\n handleClose()\n onSave()\n }}\n >\n Save\n </MenuItem>\n <Divider />\n <MenuItem\n onClick={() => {\n handleClose()\n setDeleteWarningShow(true)\n }}\n >\n Delete\n </MenuItem>\n </Menu>\n </>\n )\n}\n"],"mappings":";;;;;;AAUA,SAAgB,EAA8B,EAC5C,WACA,eACqC;CACrC,IAAM,CAAC,GAAmB,KAAwB,EAAkB,EAAK,GACnE,CAAC,GAAU,KAAe,EAA6B,IAAI,GAC3D,IAAO,EAAQ,GACf,KAAe,MAAmC;EACtD,EAAY,EAAM,aAAa;CACjC,GACM,UAAoB;EACxB,EAAY,IAAI;CAClB;CAEA,OACE,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD;GACE,OAAM;GACN,SAAQ;GACR,MAAM;GACN,mBAAkB;GAClB,iBAAiB;IAEf,AADA,EAAS,GACT,EAAqB,EAAK;GAC5B;GACA,uBAAuB,CAAC;GACxB,gBAAgB;IACd,EAAqB,EAAK;GAC5B;GACA,oBAAmB;EACpB,CAAA;EACD,kBAAC,GAAD;GAAY,SAAS;GAAa,cAAW;aAC3C,kBAAC,GAAD;IAAS,MAAK;IAAmB,MAAM;GAAQ,CAAA;EACrC,CAAA;EACZ,kBAAC,GAAD;GACE,cAAW;GACD;GACJ;GACN,SAAS;GACT,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,QAAQ,EAAE,EAAE;aALpD;IAOE,kBAAC,GAAD;KACE,eAAe;MAEb,AADA,EAAY,GACZ,EAAO;KACT;eACD;IAES,CAAA;IACV,kBAAC,GAAD,CAAU,CAAA;IACV,kBAAC,GAAD;KACE,eAAe;MAEb,AADA,EAAY,GACZ,EAAqB,EAAI;KAC3B;eACD;IAES,CAAA;GACN;;CACN,EAAA,CAAA;AAEN"}
@@ -1 +1 @@
1
- {"version":3,"file":"EvaluationRoundEditorList.js","names":[],"sources":["../../../src/components/Evaluation/EvaluationRoundEditorList.tsx"],"sourcesContent":["import { getEvaluationRoundsList } from '@/synapse-client/SynapseClient'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { useListState } from '@/utils/hooks/useListState'\nimport { Button } from '@mui/material'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport { EvaluationRoundListResponse } from '@sage-bionetworks/synapse-types'\nimport { useEffect, useState } from 'react'\nimport shortid from 'shortid'\nimport { ErrorBanner } from '../error/ErrorBanner'\nimport { EvaluationRoundEditor } from './EvaluationRoundEditor'\nimport {\n convertEvaluationRoundToInput,\n EvaluationRoundInput,\n} from './input_models/models'\n\nexport type EvaluationRoundEditorListProps = {\n /** id of the Evaluation containing EvaluationRounds to edit*/\n evaluationId: string\n}\n\nconst fetchEvaluationList = (\n evaluationId: string,\n accessToken: string,\n setListCallback: (items: EvaluationRoundInput[]) => void,\n errorHandleCallback: (error: string | SynapseClientError | undefined) => void,\n): void => {\n const allEvaluationRoundInputList: EvaluationRoundInput[] = []\n\n const getEvaluationRounds = (nextPageToken?: string) => {\n getEvaluationRoundsList(\n evaluationId,\n { nextPageToken: nextPageToken },\n accessToken,\n )\n .then((response: EvaluationRoundListResponse) => {\n const convertedToInput: EvaluationRoundInput[] = response.page.map(\n evaluationRound => convertEvaluationRoundToInput(evaluationRound),\n )\n\n allEvaluationRoundInputList.push(...convertedToInput)\n errorHandleCallback(undefined)\n\n if (response.nextPageToken) {\n getEvaluationRounds(response.nextPageToken)\n } else {\n // no more pages left. we can set the list\n setListCallback(allEvaluationRoundInputList)\n }\n })\n .catch(error => {\n errorHandleCallback(error)\n })\n }\n\n //initially no next page token\n getEvaluationRounds(undefined)\n}\n\n/**\n * Edits EvaluationsRounds for an Evaluation.\n */\nexport function EvaluationRoundEditorList({\n evaluationId,\n}: EvaluationRoundEditorListProps) {\n const { accessToken } = useSynapseContext()\n const [error, setError] = useState<string | SynapseClientError | undefined>()\n\n const {\n list: evaluationRoundInputList,\n appendToList: appendToEvaluationRoundInputList,\n handleListChange: handleEvaluationRoundInputListChange,\n handleListRemove: handleEvaluationRoundInputListRemove,\n setList: setEvaluationRoundInputList,\n } = useListState<EvaluationRoundInput>([])\n\n //run only once\n useEffect(\n () => {\n fetchEvaluationList(\n evaluationId,\n accessToken!,\n setEvaluationRoundInputList,\n setError,\n )\n },\n // we explicitly dont want to list setEvaluationRoundInputList nor setError as a dependency\n // if we do, the fetchEvaluationList will re-fetch from the backend on every new render\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [accessToken, evaluationId],\n )\n\n if (error) {\n return <ErrorBanner error={error} />\n }\n\n return (\n <div className=\"evaluation-round-editor-list\">\n <div className=\"evaluation-rounds\">\n {evaluationRoundInputList.map((evaluationRoundInput, index) => {\n return (\n <EvaluationRoundEditor\n key={evaluationRoundInput.reactListKey}\n evaluationRoundInput={evaluationRoundInput}\n onSave={handleEvaluationRoundInputListChange(index)}\n onDelete={handleEvaluationRoundInputListRemove(index)}\n />\n )\n })}\n </div>\n\n <div>\n <Button\n className=\"add-round-button\"\n variant=\"contained\"\n color=\"primary\"\n onClick={() => {\n appendToEvaluationRoundInputList({\n reactListKey: shortid(),\n evaluationId: evaluationId,\n roundStart: '',\n roundEnd: '',\n totalSubmissionLimit: '',\n otherLimits: [],\n })\n }}\n >\n Add Round\n </Button>\n </div>\n </div>\n )\n}\n"],"mappings":";;;;;;;;;;;AAoBA,IAAM,KACJ,GACA,GACA,GACA,MACS;CACT,IAAM,IAAsD,EAAE,EAExD,KAAuB,MAA2B;AACtD,IACE,GACA,EAAiB,kBAAe,EAChC,EACD,CACE,MAAM,MAA0C;GAC/C,IAAM,IAA2C,EAAS,KAAK,KAC7D,MAAmB,EAA8B,EAAgB,CAClE;AAKD,GAHA,EAA4B,KAAK,GAAG,EAAiB,EACrD,EAAoB,KAAA,EAAU,EAE1B,EAAS,gBACX,EAAoB,EAAS,cAAc,GAG3C,EAAgB,EAA4B;IAE9C,CACD,OAAM,MAAS;AACd,KAAoB,EAAM;IAC1B;;AAIN,GAAoB,KAAA,EAAU;;AAMhC,SAAgB,EAA0B,EACxC,mBACiC;CACjC,IAAM,EAAE,mBAAgB,GAAmB,EACrC,CAAC,GAAO,KAAY,GAAmD,EAEvE,EACJ,MAAM,GACN,cAAc,GACd,kBAAkB,GAClB,kBAAkB,GAClB,SAAS,MACP,EAAmC,EAAE,CAAC;AAsB1C,QAnBA,QACQ;AACJ,IACE,GACA,GACA,GACA,EACD;IAKH,CAAC,GAAa,EAAa,CAC5B,EAEG,IACK,kBAAC,GAAD,EAAoB,UAAS,CAAA,GAIpC,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,OAAD;GAAK,WAAU;aACZ,EAAyB,KAAK,GAAsB,MAEjD,kBAAC,GAAD;IAEwB;IACtB,QAAQ,EAAqC,EAAM;IACnD,UAAU,EAAqC,EAAM;IACrD,EAJK,EAAqB,aAI1B,CAEJ;GACE,CAAA,EAEN,kBAAC,OAAD,EAAA,UACE,kBAAC,GAAD;GACE,WAAU;GACV,SAAQ;GACR,OAAM;GACN,eAAe;AACb,MAAiC;KAC/B,cAAc,GAAS;KACT;KACd,YAAY;KACZ,UAAU;KACV,sBAAsB;KACtB,aAAa,EAAE;KAChB,CAAC;;aAEL;GAEQ,CAAA,EACL,CAAA,CACF"}
1
+ {"version":3,"file":"EvaluationRoundEditorList.js","names":[],"sources":["../../../src/components/Evaluation/EvaluationRoundEditorList.tsx"],"sourcesContent":["import { getEvaluationRoundsList } from '@/synapse-client/SynapseClient'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { useListState } from '@/utils/hooks/useListState'\nimport { Button } from '@mui/material'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport { EvaluationRoundListResponse } from '@sage-bionetworks/synapse-types'\nimport { useEffect, useState } from 'react'\nimport shortid from 'shortid'\nimport { ErrorBanner } from '../error/ErrorBanner'\nimport { EvaluationRoundEditor } from './EvaluationRoundEditor'\nimport {\n convertEvaluationRoundToInput,\n EvaluationRoundInput,\n} from './input_models/models'\n\nexport type EvaluationRoundEditorListProps = {\n /** id of the Evaluation containing EvaluationRounds to edit*/\n evaluationId: string\n}\n\nconst fetchEvaluationList = (\n evaluationId: string,\n accessToken: string,\n setListCallback: (items: EvaluationRoundInput[]) => void,\n errorHandleCallback: (error: string | SynapseClientError | undefined) => void,\n): void => {\n const allEvaluationRoundInputList: EvaluationRoundInput[] = []\n\n const getEvaluationRounds = (nextPageToken?: string) => {\n getEvaluationRoundsList(\n evaluationId,\n { nextPageToken: nextPageToken },\n accessToken,\n )\n .then((response: EvaluationRoundListResponse) => {\n const convertedToInput: EvaluationRoundInput[] = response.page.map(\n evaluationRound => convertEvaluationRoundToInput(evaluationRound),\n )\n\n allEvaluationRoundInputList.push(...convertedToInput)\n errorHandleCallback(undefined)\n\n if (response.nextPageToken) {\n getEvaluationRounds(response.nextPageToken)\n } else {\n // no more pages left. we can set the list\n setListCallback(allEvaluationRoundInputList)\n }\n })\n .catch(error => {\n errorHandleCallback(error)\n })\n }\n\n //initially no next page token\n getEvaluationRounds(undefined)\n}\n\n/**\n * Edits EvaluationsRounds for an Evaluation.\n */\nexport function EvaluationRoundEditorList({\n evaluationId,\n}: EvaluationRoundEditorListProps) {\n const { accessToken } = useSynapseContext()\n const [error, setError] = useState<string | SynapseClientError | undefined>()\n\n const {\n list: evaluationRoundInputList,\n appendToList: appendToEvaluationRoundInputList,\n handleListChange: handleEvaluationRoundInputListChange,\n handleListRemove: handleEvaluationRoundInputListRemove,\n setList: setEvaluationRoundInputList,\n } = useListState<EvaluationRoundInput>([])\n\n //run only once\n useEffect(\n () => {\n fetchEvaluationList(\n evaluationId,\n accessToken!,\n setEvaluationRoundInputList,\n setError,\n )\n },\n // we explicitly dont want to list setEvaluationRoundInputList nor setError as a dependency\n // if we do, the fetchEvaluationList will re-fetch from the backend on every new render\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [accessToken, evaluationId],\n )\n\n if (error) {\n return <ErrorBanner error={error} />\n }\n\n return (\n <div className=\"evaluation-round-editor-list\">\n <div className=\"evaluation-rounds\">\n {evaluationRoundInputList.map((evaluationRoundInput, index) => {\n return (\n <EvaluationRoundEditor\n key={evaluationRoundInput.reactListKey}\n evaluationRoundInput={evaluationRoundInput}\n onSave={handleEvaluationRoundInputListChange(index)}\n onDelete={handleEvaluationRoundInputListRemove(index)}\n />\n )\n })}\n </div>\n\n <div>\n <Button\n className=\"add-round-button\"\n variant=\"contained\"\n color=\"primary\"\n onClick={() => {\n appendToEvaluationRoundInputList({\n reactListKey: shortid(),\n evaluationId: evaluationId,\n roundStart: '',\n roundEnd: '',\n totalSubmissionLimit: '',\n otherLimits: [],\n })\n }}\n >\n Add Round\n </Button>\n </div>\n </div>\n )\n}\n"],"mappings":";;;;;;;;;;;AAoBA,IAAM,KACJ,GACA,GACA,GACA,MACS;CACT,IAAM,IAAsD,CAAC,GAEvD,KAAuB,MAA2B;EACtD,EACE,GACA,EAAiB,iBAAc,GAC/B,CACF,EACG,MAAM,MAA0C;GAC/C,IAAM,IAA2C,EAAS,KAAK,KAC7D,MAAmB,EAA8B,CAAe,CAClE;GAKA,AAHA,EAA4B,KAAK,GAAG,CAAgB,GACpD,EAAoB,KAAA,CAAS,GAEzB,EAAS,gBACX,EAAoB,EAAS,aAAa,IAG1C,EAAgB,CAA2B;EAE/C,CAAC,EACA,OAAM,MAAS;GACd,EAAoB,CAAK;EAC3B,CAAC;CACL;CAGA,EAAoB,KAAA,CAAS;AAC/B;AAKA,SAAgB,EAA0B,EACxC,mBACiC;CACjC,IAAM,EAAE,mBAAgB,EAAkB,GACpC,CAAC,GAAO,KAAY,EAAkD,GAEtE,EACJ,MAAM,GACN,cAAc,GACd,kBAAkB,GAClB,kBAAkB,GAClB,SAAS,MACP,EAAmC,CAAC,CAAC;CAsBzC,OAnBA,QACQ;EACJ,EACE,GACA,GACA,GACA,CACF;CACF,GAIA,CAAC,GAAa,CAAY,CAC5B,GAEI,IACK,kBAAC,GAAD,EAAoB,SAAQ,CAAA,IAInC,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,OAAD;GAAK,WAAU;aACZ,EAAyB,KAAK,GAAsB,MAEjD,kBAAC,GAAD;IAEwB;IACtB,QAAQ,EAAqC,CAAK;IAClD,UAAU,EAAqC,CAAK;GACrD,GAJM,EAAqB,YAI3B,CAEJ;EACE,CAAA,GAEL,kBAAC,OAAD,EAAA,UACE,kBAAC,GAAD;GACE,WAAU;GACV,SAAQ;GACR,OAAM;GACN,eAAe;IACb,EAAiC;KAC/B,cAAc,EAAQ;KACR;KACd,YAAY;KACZ,UAAU;KACV,sBAAsB;KACtB,aAAa,CAAC;IAChB,CAAC;GACH;aACD;EAEO,CAAA,EACL,CAAA,CACF;;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"models.js","names":[],"sources":["../../../../src/components/Evaluation/input_models/models.ts"],"sourcesContent":["import {\n EvaluationRound,\n EvaluationRoundLimit,\n EvaluationRoundLimitType,\n} from '@sage-bionetworks/synapse-types'\nimport shortid from 'shortid'\n\nexport type EvaluationRoundLimitInput = {\n readonly type: EvaluationRoundLimitType\n readonly maxSubmissionString: string\n}\nexport type EvaluationRoundInput = {\n // must be present\n evaluationId: string\n\n //used for React's \"key\" identifier when used inside a list.\n reactListKey: string\n\n //may not exist if newly crated\n id?: string\n etag?: string\n\n //may be empty string, but not undefined\n roundStart: string\n roundEnd: string\n totalSubmissionLimit: string\n\n //may be an empty list, but not undefined\n otherLimits: EvaluationRoundLimitInput[]\n}\n\nexport const convertEvaluationRoundToInput = (\n evaluationRound: EvaluationRound,\n reactListKey?: string,\n): EvaluationRoundInput => {\n return {\n reactListKey: reactListKey ?? shortid.generate(),\n evaluationId: evaluationRound.evaluationId,\n id: evaluationRound.id,\n etag: evaluationRound.etag,\n roundStart: evaluationRound.roundStart,\n roundEnd: evaluationRound.roundEnd,\n totalSubmissionLimit: extractTotalLimit(evaluationRound.limits),\n otherLimits: convertRoundLimitsToInput(evaluationRound.limits),\n }\n}\n\nconst extractTotalLimit = (\n limits: EvaluationRoundLimit[] | undefined,\n): string =>\n (limits || [])\n .filter(evaluationLimit => evaluationLimit.limitType === 'TOTAL')\n .reduce((ignorePrevValue, evaluationLimit) => {\n //after filtering there should exist at most one evaluationLimit\n return evaluationLimit.maximumSubmissions.toString()\n }, '')\n\nconst convertRoundLimitsToInput = (\n evaluationRoundLimits: EvaluationRoundLimit[] | undefined,\n): EvaluationRoundLimitInput[] => {\n return (evaluationRoundLimits || [])\n .filter(evaluationLimit => evaluationLimit.limitType !== 'TOTAL')\n .reduce<EvaluationRoundLimitInput[]>((limitInputList, evaluationLimit) => {\n limitInputList.push({\n type: evaluationLimit.limitType,\n maxSubmissionString: evaluationLimit.maximumSubmissions.toString(),\n })\n //after filtering there should exist at most one evaluationLimit\n return limitInputList\n }, [])\n}\n"],"mappings":";;AA+BA,IAAa,KACX,GACA,OAEO;CACL,cAAc,KAAgB,EAAQ,UAAU;CAChD,cAAc,EAAgB;CAC9B,IAAI,EAAgB;CACpB,MAAM,EAAgB;CACtB,YAAY,EAAgB;CAC5B,UAAU,EAAgB;CAC1B,sBAAsB,EAAkB,EAAgB,OAAO;CAC/D,aAAa,EAA0B,EAAgB,OAAO;CAC/D,GAGG,KACJ,OAEC,KAAU,EAAE,EACV,QAAO,MAAmB,EAAgB,cAAc,QAAQ,CAChE,QAAQ,GAAiB,MAEjB,EAAgB,mBAAmB,UAAU,EACnD,GAAG,EAEJ,KACJ,OAEQ,KAAyB,EAAE,EAChC,QAAO,MAAmB,EAAgB,cAAc,QAAQ,CAChE,QAAqC,GAAgB,OACpD,EAAe,KAAK;CAClB,MAAM,EAAgB;CACtB,qBAAqB,EAAgB,mBAAmB,UAAU;CACnE,CAAC,EAEK,IACN,EAAE,CAAC"}
1
+ {"version":3,"file":"models.js","names":[],"sources":["../../../../src/components/Evaluation/input_models/models.ts"],"sourcesContent":["import {\n EvaluationRound,\n EvaluationRoundLimit,\n EvaluationRoundLimitType,\n} from '@sage-bionetworks/synapse-types'\nimport shortid from 'shortid'\n\nexport type EvaluationRoundLimitInput = {\n readonly type: EvaluationRoundLimitType\n readonly maxSubmissionString: string\n}\nexport type EvaluationRoundInput = {\n // must be present\n evaluationId: string\n\n //used for React's \"key\" identifier when used inside a list.\n reactListKey: string\n\n //may not exist if newly crated\n id?: string\n etag?: string\n\n //may be empty string, but not undefined\n roundStart: string\n roundEnd: string\n totalSubmissionLimit: string\n\n //may be an empty list, but not undefined\n otherLimits: EvaluationRoundLimitInput[]\n}\n\nexport const convertEvaluationRoundToInput = (\n evaluationRound: EvaluationRound,\n reactListKey?: string,\n): EvaluationRoundInput => {\n return {\n reactListKey: reactListKey ?? shortid.generate(),\n evaluationId: evaluationRound.evaluationId,\n id: evaluationRound.id,\n etag: evaluationRound.etag,\n roundStart: evaluationRound.roundStart,\n roundEnd: evaluationRound.roundEnd,\n totalSubmissionLimit: extractTotalLimit(evaluationRound.limits),\n otherLimits: convertRoundLimitsToInput(evaluationRound.limits),\n }\n}\n\nconst extractTotalLimit = (\n limits: EvaluationRoundLimit[] | undefined,\n): string =>\n (limits || [])\n .filter(evaluationLimit => evaluationLimit.limitType === 'TOTAL')\n .reduce((ignorePrevValue, evaluationLimit) => {\n //after filtering there should exist at most one evaluationLimit\n return evaluationLimit.maximumSubmissions.toString()\n }, '')\n\nconst convertRoundLimitsToInput = (\n evaluationRoundLimits: EvaluationRoundLimit[] | undefined,\n): EvaluationRoundLimitInput[] => {\n return (evaluationRoundLimits || [])\n .filter(evaluationLimit => evaluationLimit.limitType !== 'TOTAL')\n .reduce<EvaluationRoundLimitInput[]>((limitInputList, evaluationLimit) => {\n limitInputList.push({\n type: evaluationLimit.limitType,\n maxSubmissionString: evaluationLimit.maximumSubmissions.toString(),\n })\n //after filtering there should exist at most one evaluationLimit\n return limitInputList\n }, [])\n}\n"],"mappings":";;AA+BA,IAAa,KACX,GACA,OAEO;CACL,cAAc,KAAgB,EAAQ,SAAS;CAC/C,cAAc,EAAgB;CAC9B,IAAI,EAAgB;CACpB,MAAM,EAAgB;CACtB,YAAY,EAAgB;CAC5B,UAAU,EAAgB;CAC1B,sBAAsB,EAAkB,EAAgB,MAAM;CAC9D,aAAa,EAA0B,EAAgB,MAAM;AAC/D,IAGI,KACJ,OAEC,KAAU,CAAC,GACT,QAAO,MAAmB,EAAgB,cAAc,OAAO,EAC/D,QAAQ,GAAiB,MAEjB,EAAgB,mBAAmB,SAAS,GAClD,EAAE,GAEH,KACJ,OAEQ,KAAyB,CAAC,GAC/B,QAAO,MAAmB,EAAgB,cAAc,OAAO,EAC/D,QAAqC,GAAgB,OACpD,EAAe,KAAK;CAClB,MAAM,EAAgB;CACtB,qBAAqB,EAAgB,mBAAmB,SAAS;AACnE,CAAC,GAEM,IACN,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"EvaluationRoundLimitOptions.js","names":[],"sources":["../../../../src/components/Evaluation/round_limits/EvaluationRoundLimitOptions.tsx"],"sourcesContent":["import StyledFormControl from '@/components/styled/StyledFormControl'\nimport { InputLabel, Select, TextField } from '@mui/material'\nimport { EvaluationRoundLimitType } from '@sage-bionetworks/synapse-types'\nimport { EvaluationRoundLimitInput } from '../input_models/models'\nimport { useId } from 'react'\n\nexport type EvaluationRoundLimitOptionsProps = {\n limitInput: EvaluationRoundLimitInput\n //all types for which an EvaluationRoundLimitOptions was already created\n allSelectedTypes: Set<EvaluationRoundLimitType>\n onChange: (limitInput: EvaluationRoundLimitInput) => void\n}\n\nexport const LIMIT_TYPE_DISPLAY_NAME: Partial<\n Record<EvaluationRoundLimitType, string>\n> = {\n // EvaluationRoundLimitType.TOTAL is purposely omitted because an <input> in the parent handles it\n DAILY: 'Daily Limit',\n WEEKLY: 'Weekly Limit',\n MONTHLY: 'Monthly Limit',\n}\n\nexport function EvaluationRoundLimitOptions({\n limitInput,\n allSelectedTypes,\n onChange,\n}: EvaluationRoundLimitOptionsProps) {\n const limitTypeLabelId = useId()\n\n return (\n <>\n <StyledFormControl className=\"limit-type\">\n <InputLabel id={limitTypeLabelId}>Limit Type</InputLabel>\n <Select\n labelId={limitTypeLabelId}\n fullWidth\n native\n value={limitInput.type}\n onChange={event => {\n onChange({\n type: event.target.value as EvaluationRoundLimitType,\n maxSubmissionString: limitInput.maxSubmissionString,\n })\n }}\n >\n {Object.entries(LIMIT_TYPE_DISPLAY_NAME).map(\n ([displayLimitType, displayName]) => (\n <option\n key={displayLimitType}\n value={displayLimitType}\n disabled={\n allSelectedTypes.has(\n displayLimitType as EvaluationRoundLimitType,\n ) && displayLimitType !== limitInput.type\n }\n >\n {displayName}\n </option>\n ),\n )}\n </Select>\n </StyledFormControl>\n\n <TextField\n fullWidth\n className=\"limit-input\"\n label={'Maximum Submissions'}\n value={limitInput.maxSubmissionString}\n onChange={event => {\n onChange({\n type: limitInput.type,\n maxSubmissionString: event.target.value,\n })\n }}\n slotProps={{\n htmlInput: {\n pattern: '[0-9]*',\n },\n }}\n />\n </>\n )\n}\n"],"mappings":";;;;;AAaA,IAAa,IAET;CAEF,OAAO;CACP,QAAQ;CACR,SAAS;CACV;AAED,SAAgB,EAA4B,EAC1C,eACA,qBACA,eACmC;CACnC,IAAM,IAAmB,GAAO;AAEhC,QACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;EAAmB,WAAU;YAA7B,CACE,kBAAC,GAAD;GAAY,IAAI;aAAkB;GAAuB,CAAA,EACzD,kBAAC,GAAD;GACE,SAAS;GACT,WAAA;GACA,QAAA;GACA,OAAO,EAAW;GAClB,WAAU,MAAS;AACjB,MAAS;KACP,MAAM,EAAM,OAAO;KACnB,qBAAqB,EAAW;KACjC,CAAC;;aAGH,OAAO,QAAQ,EAAwB,CAAC,KACtC,CAAC,GAAkB,OAClB,kBAAC,UAAD;IAEE,OAAO;IACP,UACE,EAAiB,IACf,EACD,IAAI,MAAqB,EAAW;cAGtC;IACM,EATF,EASE,CAEZ;GACM,CAAA,CACS;KAEpB,kBAAC,GAAD;EACE,WAAA;EACA,WAAU;EACV,OAAO;EACP,OAAO,EAAW;EAClB,WAAU,MAAS;AACjB,KAAS;IACP,MAAM,EAAW;IACjB,qBAAqB,EAAM,OAAO;IACnC,CAAC;;EAEJ,WAAW,EACT,WAAW,EACT,SAAS,UACV,EACF;EACD,CAAA,CACD,EAAA,CAAA"}
1
+ {"version":3,"file":"EvaluationRoundLimitOptions.js","names":[],"sources":["../../../../src/components/Evaluation/round_limits/EvaluationRoundLimitOptions.tsx"],"sourcesContent":["import StyledFormControl from '@/components/styled/StyledFormControl'\nimport { InputLabel, Select, TextField } from '@mui/material'\nimport { EvaluationRoundLimitType } from '@sage-bionetworks/synapse-types'\nimport { EvaluationRoundLimitInput } from '../input_models/models'\nimport { useId } from 'react'\n\nexport type EvaluationRoundLimitOptionsProps = {\n limitInput: EvaluationRoundLimitInput\n //all types for which an EvaluationRoundLimitOptions was already created\n allSelectedTypes: Set<EvaluationRoundLimitType>\n onChange: (limitInput: EvaluationRoundLimitInput) => void\n}\n\nexport const LIMIT_TYPE_DISPLAY_NAME: Partial<\n Record<EvaluationRoundLimitType, string>\n> = {\n // EvaluationRoundLimitType.TOTAL is purposely omitted because an <input> in the parent handles it\n DAILY: 'Daily Limit',\n WEEKLY: 'Weekly Limit',\n MONTHLY: 'Monthly Limit',\n}\n\nexport function EvaluationRoundLimitOptions({\n limitInput,\n allSelectedTypes,\n onChange,\n}: EvaluationRoundLimitOptionsProps) {\n const limitTypeLabelId = useId()\n\n return (\n <>\n <StyledFormControl className=\"limit-type\">\n <InputLabel id={limitTypeLabelId}>Limit Type</InputLabel>\n <Select\n labelId={limitTypeLabelId}\n fullWidth\n native\n value={limitInput.type}\n onChange={event => {\n onChange({\n type: event.target.value as EvaluationRoundLimitType,\n maxSubmissionString: limitInput.maxSubmissionString,\n })\n }}\n >\n {Object.entries(LIMIT_TYPE_DISPLAY_NAME).map(\n ([displayLimitType, displayName]) => (\n <option\n key={displayLimitType}\n value={displayLimitType}\n disabled={\n allSelectedTypes.has(\n displayLimitType as EvaluationRoundLimitType,\n ) && displayLimitType !== limitInput.type\n }\n >\n {displayName}\n </option>\n ),\n )}\n </Select>\n </StyledFormControl>\n\n <TextField\n fullWidth\n className=\"limit-input\"\n label={'Maximum Submissions'}\n value={limitInput.maxSubmissionString}\n onChange={event => {\n onChange({\n type: limitInput.type,\n maxSubmissionString: event.target.value,\n })\n }}\n slotProps={{\n htmlInput: {\n pattern: '[0-9]*',\n },\n }}\n />\n </>\n )\n}\n"],"mappings":";;;;;AAaA,IAAa,IAET;CAEF,OAAO;CACP,QAAQ;CACR,SAAS;AACX;AAEA,SAAgB,EAA4B,EAC1C,eACA,qBACA,eACmC;CACnC,IAAM,IAAmB,EAAM;CAE/B,OACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;EAAmB,WAAU;YAA7B,CACE,kBAAC,GAAD;GAAY,IAAI;aAAkB;EAAsB,CAAA,GACxD,kBAAC,GAAD;GACE,SAAS;GACT,WAAA;GACA,QAAA;GACA,OAAO,EAAW;GAClB,WAAU,MAAS;IACjB,EAAS;KACP,MAAM,EAAM,OAAO;KACnB,qBAAqB,EAAW;IAClC,CAAC;GACH;aAEC,OAAO,QAAQ,CAAuB,EAAE,KACtC,CAAC,GAAkB,OAClB,kBAAC,UAAD;IAEE,OAAO;IACP,UACE,EAAiB,IACf,CACF,KAAK,MAAqB,EAAW;cAGtC;GACK,GATD,CASC,CAEZ;EACM,CAAA,CACS;KAEnB,kBAAC,GAAD;EACE,WAAA;EACA,WAAU;EACV,OAAO;EACP,OAAO,EAAW;EAClB,WAAU,MAAS;GACjB,EAAS;IACP,MAAM,EAAW;IACjB,qBAAqB,EAAM,OAAO;GACpC,CAAC;EACH;EACA,WAAW,EACT,WAAW,EACT,SAAS,SACX,EACF;CACD,CAAA,CACD,EAAA,CAAA;AAEN"}
@@ -1 +1 @@
1
- {"version":3,"file":"EvaluationRoundLimitOptionsList.js","names":[],"sources":["../../../../src/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.tsx"],"sourcesContent":["import { AddBox, CloseTwoTone } from '@mui/icons-material'\nimport { IconButton } from '@mui/material'\nimport { EvaluationRoundLimitType } from '@sage-bionetworks/synapse-types'\nimport { Fragment, useCallback, useEffect } from 'react'\nimport { EvaluationRoundLimitInput } from '../input_models/models'\nimport {\n EvaluationRoundLimitOptions,\n LIMIT_TYPE_DISPLAY_NAME,\n} from './EvaluationRoundLimitOptions'\n\nconst AVAILABLE_LIMIT_TYPES = Object.keys(LIMIT_TYPE_DISPLAY_NAME)\n\nexport type EvaluationRoundLimitOptionsListProps = {\n limitInputs: EvaluationRoundLimitInput[]\n handleChange: (\n index: number,\n ) => (limitInput: EvaluationRoundLimitInput) => void\n\n handleDeleteLimit: (index: number) => () => void\n\n onAddNewLimit: (limit: EvaluationRoundLimitInput) => void\n}\n\nconst selectUnusedType = (\n selectedTypes: Set<EvaluationRoundLimitType>,\n): EvaluationRoundLimitType => {\n return AVAILABLE_LIMIT_TYPES.find(\n key => !selectedTypes.has(key as EvaluationRoundLimitType),\n ) as EvaluationRoundLimitType\n}\n\nexport function EvaluationRoundLimitOptionsList({\n limitInputs,\n handleChange,\n handleDeleteLimit,\n onAddNewLimit,\n}: EvaluationRoundLimitOptionsListProps) {\n // all types that are currently being used\n const selectedTypes: Set<EvaluationRoundLimitType> = new Set(\n limitInputs.map(limit => limit.type),\n )\n\n const addNewLimit = useCallback(() => {\n onAddNewLimit({\n type: selectUnusedType(selectedTypes),\n maxSubmissionString: '',\n })\n }, [onAddNewLimit, selectedTypes])\n\n //display some input even if no limits currently exist\n useEffect(() => {\n if (limitInputs.length === 0) {\n addNewLimit()\n }\n }, [limitInputs, addNewLimit])\n\n return (\n <div\n data-testid=\"EvaluationRoundLimitOptionsList\"\n className=\"advanced-limits-grid\"\n >\n {limitInputs.map((limit, index) => {\n return (\n <Fragment key={limit.type}>\n <EvaluationRoundLimitOptions\n limitInput={limit}\n allSelectedTypes={selectedTypes}\n onChange={handleChange(index)}\n />\n\n {/*remove button for the EvaluationRoundLimitOptions*/}\n <IconButton\n size={'small'}\n color=\"primary\"\n aria-label=\"Remove\"\n className=\"remove-button\"\n onClick={handleDeleteLimit(index)}\n sx={{ height: '40px', width: '40px' }}\n >\n <CloseTwoTone />\n </IconButton>\n\n {/*conditionally create a \"add\" button*/}\n {\n // if last element\n index === limitInputs.length - 1 &&\n // if the are unused limit types\n limitInputs.length < AVAILABLE_LIMIT_TYPES.length && (\n <IconButton\n size={'small'}\n color=\"primary\"\n aria-label=\"Add\"\n onClick={addNewLimit}\n className=\"add-button\"\n sx={{ height: '40px', width: '40px' }}\n >\n <AddBox />\n </IconButton>\n )\n }\n </Fragment>\n )\n })}\n </div>\n )\n}\n"],"mappings":";;;;;;AAUA,IAAM,IAAwB,OAAO,KAAK,EAAwB,EAa5D,KACJ,MAEO,EAAsB,MAC3B,MAAO,CAAC,EAAc,IAAI,EAAgC,CAC3D;AAGH,SAAgB,EAAgC,EAC9C,gBACA,iBACA,sBACA,oBACuC;CAEvC,IAAM,IAA+C,IAAI,IACvD,EAAY,KAAI,MAAS,EAAM,KAAK,CACrC,EAEK,IAAc,QAAkB;AACpC,IAAc;GACZ,MAAM,EAAiB,EAAc;GACrC,qBAAqB;GACtB,CAAC;IACD,CAAC,GAAe,EAAc,CAAC;AASlC,QANA,QAAgB;AACd,EAAI,EAAY,WAAW,KACzB,GAAa;IAEd,CAAC,GAAa,EAAY,CAAC,EAG5B,kBAAC,OAAD;EACE,eAAY;EACZ,WAAU;YAET,EAAY,KAAK,GAAO,MAErB,kBAAC,GAAD,EAAA,UAAA;GACE,kBAAC,GAAD;IACE,YAAY;IACZ,kBAAkB;IAClB,UAAU,EAAa,EAAM;IAC7B,CAAA;GAGF,kBAAC,GAAD;IACE,MAAM;IACN,OAAM;IACN,cAAW;IACX,WAAU;IACV,SAAS,EAAkB,EAAM;IACjC,IAAI;KAAE,QAAQ;KAAQ,OAAO;KAAQ;cAErC,kBAAC,GAAD,EAAgB,CAAA;IACL,CAAA;GAKX,MAAU,EAAY,SAAS,KAE7B,EAAY,SAAS,EAAsB,UACzC,kBAAC,GAAD;IACE,MAAM;IACN,OAAM;IACN,cAAW;IACX,SAAS;IACT,WAAU;IACV,IAAI;KAAE,QAAQ;KAAQ,OAAO;KAAQ;cAErC,kBAAC,GAAD,EAAU,CAAA;IACC,CAAA;GAGV,EAAA,EArCI,EAAM,KAqCV,CAEb;EACE,CAAA"}
1
+ {"version":3,"file":"EvaluationRoundLimitOptionsList.js","names":[],"sources":["../../../../src/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.tsx"],"sourcesContent":["import { AddBox, CloseTwoTone } from '@mui/icons-material'\nimport { IconButton } from '@mui/material'\nimport { EvaluationRoundLimitType } from '@sage-bionetworks/synapse-types'\nimport { Fragment, useCallback, useEffect } from 'react'\nimport { EvaluationRoundLimitInput } from '../input_models/models'\nimport {\n EvaluationRoundLimitOptions,\n LIMIT_TYPE_DISPLAY_NAME,\n} from './EvaluationRoundLimitOptions'\n\nconst AVAILABLE_LIMIT_TYPES = Object.keys(LIMIT_TYPE_DISPLAY_NAME)\n\nexport type EvaluationRoundLimitOptionsListProps = {\n limitInputs: EvaluationRoundLimitInput[]\n handleChange: (\n index: number,\n ) => (limitInput: EvaluationRoundLimitInput) => void\n\n handleDeleteLimit: (index: number) => () => void\n\n onAddNewLimit: (limit: EvaluationRoundLimitInput) => void\n}\n\nconst selectUnusedType = (\n selectedTypes: Set<EvaluationRoundLimitType>,\n): EvaluationRoundLimitType => {\n return AVAILABLE_LIMIT_TYPES.find(\n key => !selectedTypes.has(key as EvaluationRoundLimitType),\n ) as EvaluationRoundLimitType\n}\n\nexport function EvaluationRoundLimitOptionsList({\n limitInputs,\n handleChange,\n handleDeleteLimit,\n onAddNewLimit,\n}: EvaluationRoundLimitOptionsListProps) {\n // all types that are currently being used\n const selectedTypes: Set<EvaluationRoundLimitType> = new Set(\n limitInputs.map(limit => limit.type),\n )\n\n const addNewLimit = useCallback(() => {\n onAddNewLimit({\n type: selectUnusedType(selectedTypes),\n maxSubmissionString: '',\n })\n }, [onAddNewLimit, selectedTypes])\n\n //display some input even if no limits currently exist\n useEffect(() => {\n if (limitInputs.length === 0) {\n addNewLimit()\n }\n }, [limitInputs, addNewLimit])\n\n return (\n <div\n data-testid=\"EvaluationRoundLimitOptionsList\"\n className=\"advanced-limits-grid\"\n >\n {limitInputs.map((limit, index) => {\n return (\n <Fragment key={limit.type}>\n <EvaluationRoundLimitOptions\n limitInput={limit}\n allSelectedTypes={selectedTypes}\n onChange={handleChange(index)}\n />\n\n {/*remove button for the EvaluationRoundLimitOptions*/}\n <IconButton\n size={'small'}\n color=\"primary\"\n aria-label=\"Remove\"\n className=\"remove-button\"\n onClick={handleDeleteLimit(index)}\n sx={{ height: '40px', width: '40px' }}\n >\n <CloseTwoTone />\n </IconButton>\n\n {/*conditionally create a \"add\" button*/}\n {\n // if last element\n index === limitInputs.length - 1 &&\n // if the are unused limit types\n limitInputs.length < AVAILABLE_LIMIT_TYPES.length && (\n <IconButton\n size={'small'}\n color=\"primary\"\n aria-label=\"Add\"\n onClick={addNewLimit}\n className=\"add-button\"\n sx={{ height: '40px', width: '40px' }}\n >\n <AddBox />\n </IconButton>\n )\n }\n </Fragment>\n )\n })}\n </div>\n )\n}\n"],"mappings":";;;;;;AAUA,IAAM,IAAwB,OAAO,KAAK,CAAuB,GAa3D,KACJ,MAEO,EAAsB,MAC3B,MAAO,CAAC,EAAc,IAAI,CAA+B,CAC3D;AAGF,SAAgB,EAAgC,EAC9C,gBACA,iBACA,sBACA,oBACuC;CAEvC,IAAM,IAA+C,IAAI,IACvD,EAAY,KAAI,MAAS,EAAM,IAAI,CACrC,GAEM,IAAc,QAAkB;EACpC,EAAc;GACZ,MAAM,EAAiB,CAAa;GACpC,qBAAqB;EACvB,CAAC;CACH,GAAG,CAAC,GAAe,CAAa,CAAC;CASjC,OANA,QAAgB;EACd,AAAI,EAAY,WAAW,KACzB,EAAY;CAEhB,GAAG,CAAC,GAAa,CAAW,CAAC,GAG3B,kBAAC,OAAD;EACE,eAAY;EACZ,WAAU;YAET,EAAY,KAAK,GAAO,MAErB,kBAAC,GAAD,EAAA,UAAA;GACE,kBAAC,GAAD;IACE,YAAY;IACZ,kBAAkB;IAClB,UAAU,EAAa,CAAK;GAC7B,CAAA;GAGD,kBAAC,GAAD;IACE,MAAM;IACN,OAAM;IACN,cAAW;IACX,WAAU;IACV,SAAS,EAAkB,CAAK;IAChC,IAAI;KAAE,QAAQ;KAAQ,OAAO;IAAO;cAEpC,kBAAC,GAAD,CAAe,CAAA;GACL,CAAA;GAKV,MAAU,EAAY,SAAS,KAE7B,EAAY,SAAS,EAAsB,UACzC,kBAAC,GAAD;IACE,MAAM;IACN,OAAM;IACN,cAAW;IACX,SAAS;IACT,WAAU;IACV,IAAI;KAAE,QAAQ;KAAQ,OAAO;IAAO;cAEpC,kBAAC,GAAD,CAAS,CAAA;GACC,CAAA;EAGV,EAAA,GArCK,EAAM,IAqCX,CAEb;CACE,CAAA;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"EvaluationFinder.js","names":[],"sources":["../../../src/components/EvaluationFinder/EvaluationFinder.tsx"],"sourcesContent":["import { useGetEvaluationsInfinite } from '@/synapse-queries/evaluation/useEvaluation'\nimport {\n Alert,\n Box,\n Checkbox,\n FormControl,\n FormControlLabel,\n FormGroup,\n LinearProgress,\n TextField,\n} from '@mui/material'\nimport { GetEvaluationParameters } from '@sage-bionetworks/synapse-types'\nimport { useEffect, useMemo, useState } from 'react'\nimport { HelpPopover } from '../HelpPopover'\nimport { IconSvg } from '../IconSvg'\nimport { IconSvgButton } from '../IconSvgButton'\nimport styles from './EvaluationFinder.module.scss'\n\nexport type EvaluationFinderProps = Pick<\n GetEvaluationParameters,\n 'accessType' | 'activeOnly'\n> & {\n selectedIds: string[]\n onChange: (newSelectedIds: string[]) => void\n}\n\nexport default function EvaluationFinder(props: EvaluationFinderProps) {\n const { accessType, activeOnly, selectedIds = [], onChange } = props\n const [searchTerm, setSearchTerm] = useState('')\n const { data, isLoading, hasNextPage, fetchNextPage, isFetchingNextPage } =\n useGetEvaluationsInfinite(\n {\n accessType,\n activeOnly,\n },\n { placeholderData: previousData => previousData, throwOnError: true },\n )\n\n // Automatically fetch all pages\n useEffect(() => {\n if (hasNextPage && !isFetchingNextPage) {\n fetchNextPage()\n }\n }, [hasNextPage, isFetchingNextPage, fetchNextPage])\n\n // Flatten all evaluations from all pages\n const allEvaluations = useMemo(() => {\n return data?.pages?.flatMap(page => page.results) ?? []\n }, [data])\n\n // Filter evaluations based on search term\n const filteredEvaluations = useMemo(() => {\n if (!searchTerm.trim()) {\n return allEvaluations\n }\n return allEvaluations.filter(evaluation =>\n evaluation.name?.toLowerCase().includes(searchTerm.toLowerCase()),\n )\n }, [allEvaluations, searchTerm])\n\n if (isLoading) {\n return <LinearProgress />\n }\n if (!data?.pages) {\n // This should never happen since errors are propagated to the error boundary\n return (\n <Alert severity=\"error\">\n An unexpected error occurred and evaluations could not be loaded\n </Alert>\n )\n }\n\n return (\n <>\n <TextField\n fullWidth\n variant=\"outlined\"\n value={searchTerm}\n onChange={e => setSearchTerm(e.target.value)}\n className={styles.searchField}\n placeholder=\"Search Evaluations\"\n slotProps={{\n input: {\n startAdornment: (\n <IconSvg\n icon=\"search\"\n wrap={false}\n className={styles.searchIcon}\n />\n ),\n endAdornment: (\n <>\n {searchTerm.length > 0 && (\n <IconSvgButton\n icon=\"close\"\n size=\"small\"\n onClick={() => {\n setSearchTerm('')\n }}\n />\n )}\n </>\n ),\n },\n }}\n />\n <Box className={styles.scrollContainer}>\n <FormControl fullWidth>\n <FormGroup className={styles.formGroup}>\n {filteredEvaluations.map(evaluation => (\n <FormControlLabel\n control={\n <Checkbox inputProps={{ 'aria-label': evaluation.name! }} />\n }\n key={evaluation.id}\n label={\n <Box className={styles.labelContainer}>\n {evaluation.name}\n {evaluation.submissionInstructionsMessage &&\n evaluation.submissionInstructionsMessage.length > 0 && (\n <Box className={styles.helpPopoverWrapper}>\n <HelpPopover\n markdownText={\n evaluation.submissionInstructionsMessage\n }\n placement={'right'}\n />\n </Box>\n )}\n </Box>\n }\n checked={selectedIds.includes(evaluation.id!)}\n onChange={() => {\n if (selectedIds.includes(evaluation.id!)) {\n onChange(selectedIds.filter(id => id !== evaluation.id))\n } else {\n onChange([...selectedIds, evaluation.id!])\n }\n }}\n />\n ))}\n {filteredEvaluations.length === 0 && (\n <Box className={styles.emptyState}>No evaluations found</Box>\n )}\n </FormGroup>\n </FormControl>\n </Box>\n {isFetchingNextPage && (\n <Box className={styles.loadingContainer}>\n <LinearProgress />\n </Box>\n )}\n </>\n )\n}\n"],"mappings":";;;;;;;;;;;AA0BA,SAAwB,EAAiB,GAA8B;CACrE,IAAM,EAAE,eAAY,eAAY,iBAAc,EAAE,EAAE,gBAAa,GACzD,CAAC,GAAY,KAAiB,EAAS,GAAG,EAC1C,EAAE,SAAM,cAAW,gBAAa,kBAAe,0BACnD,EACE;EACE;EACA;EACD,EACD;EAAE,kBAAiB,MAAgB;EAAc,cAAc;EAAM,CACtE;AAGH,SAAgB;AACd,EAAI,KAAe,CAAC,KAClB,GAAe;IAEhB;EAAC;EAAa;EAAoB;EAAc,CAAC;CAGpD,IAAM,IAAiB,QACd,GAAM,OAAO,SAAQ,MAAQ,EAAK,QAAQ,IAAI,EAAE,EACtD,CAAC,EAAK,CAAC,EAGJ,IAAsB,QACrB,EAAW,MAAM,GAGf,EAAe,QAAO,MAC3B,EAAW,MAAM,aAAa,CAAC,SAAS,EAAW,aAAa,CAAC,CAClE,GAJQ,GAKR,CAAC,GAAgB,EAAW,CAAC;AAchC,QAZI,IACK,kBAAC,GAAD,EAAkB,CAAA,GAEtB,GAAM,QAUT,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD;GACE,WAAA;GACA,SAAQ;GACR,OAAO;GACP,WAAU,MAAK,EAAc,EAAE,OAAO,MAAM;GAC5C,WAAW,EAAO;GAClB,aAAY;GACZ,WAAW,EACT,OAAO;IACL,gBACE,kBAAC,GAAD;KACE,MAAK;KACL,MAAM;KACN,WAAW,EAAO;KAClB,CAAA;IAEJ,cACE,kBAAA,GAAA,EAAA,UACG,EAAW,SAAS,KACnB,kBAAC,GAAD;KACE,MAAK;KACL,MAAK;KACL,eAAe;AACb,QAAc,GAAG;;KAEnB,CAAA,EAEH,CAAA;IAEN,EACF;GACD,CAAA;EACF,kBAAC,GAAD;GAAK,WAAW,EAAO;aACrB,kBAAC,GAAD;IAAa,WAAA;cACX,kBAAC,GAAD;KAAW,WAAW,EAAO;eAA7B,CACG,EAAoB,KAAI,MACvB,kBAAC,GAAD;MACE,SACE,kBAAC,GAAD,EAAU,YAAY,EAAE,cAAc,EAAW,MAAO,EAAI,CAAA;MAG9D,OACE,kBAAC,GAAD;OAAK,WAAW,EAAO;iBAAvB,CACG,EAAW,MACX,EAAW,iCACV,EAAW,8BAA8B,SAAS,KAChD,kBAAC,GAAD;QAAK,WAAW,EAAO;kBACrB,kBAAC,GAAD;SACE,cACE,EAAW;SAEb,WAAW;SACX,CAAA;QACE,CAAA,CAEN;;MAER,SAAS,EAAY,SAAS,EAAW,GAAI;MAC7C,gBAAgB;AACd,OAAI,EAAY,SAAS,EAAW,GAAI,GACtC,EAAS,EAAY,QAAO,MAAM,MAAO,EAAW,GAAG,CAAC,GAExD,EAAS,CAAC,GAAG,GAAa,EAAW,GAAI,CAAC;;MAG9C,EAzBK,EAAW,GAyBhB,CACF,EACD,EAAoB,WAAW,KAC9B,kBAAC,GAAD;MAAK,WAAW,EAAO;gBAAY;MAA0B,CAAA,CAErD;;IACA,CAAA;GACV,CAAA;EACL,KACC,kBAAC,GAAD;GAAK,WAAW,EAAO;aACrB,kBAAC,GAAD,EAAkB,CAAA;GACd,CAAA;EAEP,EAAA,CAAA,GAtFD,kBAAC,GAAD;EAAO,UAAS;YAAQ;EAEhB,CAAA"}
1
+ {"version":3,"file":"EvaluationFinder.js","names":[],"sources":["../../../src/components/EvaluationFinder/EvaluationFinder.tsx"],"sourcesContent":["import { useGetEvaluationsInfinite } from '@/synapse-queries/evaluation/useEvaluation'\nimport {\n Alert,\n Box,\n Checkbox,\n FormControl,\n FormControlLabel,\n FormGroup,\n LinearProgress,\n TextField,\n} from '@mui/material'\nimport { GetEvaluationParameters } from '@sage-bionetworks/synapse-types'\nimport { useEffect, useMemo, useState } from 'react'\nimport { HelpPopover } from '../HelpPopover'\nimport { IconSvg } from '../IconSvg'\nimport { IconSvgButton } from '../IconSvgButton'\nimport styles from './EvaluationFinder.module.scss'\n\nexport type EvaluationFinderProps = Pick<\n GetEvaluationParameters,\n 'accessType' | 'activeOnly'\n> & {\n selectedIds: string[]\n onChange: (newSelectedIds: string[]) => void\n}\n\nexport default function EvaluationFinder(props: EvaluationFinderProps) {\n const { accessType, activeOnly, selectedIds = [], onChange } = props\n const [searchTerm, setSearchTerm] = useState('')\n const { data, isLoading, hasNextPage, fetchNextPage, isFetchingNextPage } =\n useGetEvaluationsInfinite(\n {\n accessType,\n activeOnly,\n },\n { placeholderData: previousData => previousData, throwOnError: true },\n )\n\n // Automatically fetch all pages\n useEffect(() => {\n if (hasNextPage && !isFetchingNextPage) {\n fetchNextPage()\n }\n }, [hasNextPage, isFetchingNextPage, fetchNextPage])\n\n // Flatten all evaluations from all pages\n const allEvaluations = useMemo(() => {\n return data?.pages?.flatMap(page => page.results) ?? []\n }, [data])\n\n // Filter evaluations based on search term\n const filteredEvaluations = useMemo(() => {\n if (!searchTerm.trim()) {\n return allEvaluations\n }\n return allEvaluations.filter(evaluation =>\n evaluation.name?.toLowerCase().includes(searchTerm.toLowerCase()),\n )\n }, [allEvaluations, searchTerm])\n\n if (isLoading) {\n return <LinearProgress />\n }\n if (!data?.pages) {\n // This should never happen since errors are propagated to the error boundary\n return (\n <Alert severity=\"error\">\n An unexpected error occurred and evaluations could not be loaded\n </Alert>\n )\n }\n\n return (\n <>\n <TextField\n fullWidth\n variant=\"outlined\"\n value={searchTerm}\n onChange={e => setSearchTerm(e.target.value)}\n className={styles.searchField}\n placeholder=\"Search Evaluations\"\n slotProps={{\n input: {\n startAdornment: (\n <IconSvg\n icon=\"search\"\n wrap={false}\n className={styles.searchIcon}\n />\n ),\n endAdornment: (\n <>\n {searchTerm.length > 0 && (\n <IconSvgButton\n icon=\"close\"\n size=\"small\"\n onClick={() => {\n setSearchTerm('')\n }}\n />\n )}\n </>\n ),\n },\n }}\n />\n <Box className={styles.scrollContainer}>\n <FormControl fullWidth>\n <FormGroup className={styles.formGroup}>\n {filteredEvaluations.map(evaluation => (\n <FormControlLabel\n control={\n <Checkbox inputProps={{ 'aria-label': evaluation.name! }} />\n }\n key={evaluation.id}\n label={\n <Box className={styles.labelContainer}>\n {evaluation.name}\n {evaluation.submissionInstructionsMessage &&\n evaluation.submissionInstructionsMessage.length > 0 && (\n <Box className={styles.helpPopoverWrapper}>\n <HelpPopover\n markdownText={\n evaluation.submissionInstructionsMessage\n }\n placement={'right'}\n />\n </Box>\n )}\n </Box>\n }\n checked={selectedIds.includes(evaluation.id!)}\n onChange={() => {\n if (selectedIds.includes(evaluation.id!)) {\n onChange(selectedIds.filter(id => id !== evaluation.id))\n } else {\n onChange([...selectedIds, evaluation.id!])\n }\n }}\n />\n ))}\n {filteredEvaluations.length === 0 && (\n <Box className={styles.emptyState}>No evaluations found</Box>\n )}\n </FormGroup>\n </FormControl>\n </Box>\n {isFetchingNextPage && (\n <Box className={styles.loadingContainer}>\n <LinearProgress />\n </Box>\n )}\n </>\n )\n}\n"],"mappings":";;;;;;;;;;;AA0BA,SAAwB,EAAiB,GAA8B;CACrE,IAAM,EAAE,eAAY,eAAY,iBAAc,CAAC,GAAG,gBAAa,GACzD,CAAC,GAAY,KAAiB,EAAS,EAAE,GACzC,EAAE,SAAM,cAAW,gBAAa,kBAAe,0BACnD,EACE;EACE;EACA;CACF,GACA;EAAE,kBAAiB,MAAgB;EAAc,cAAc;CAAK,CACtE;CAGF,QAAgB;EACd,AAAI,KAAe,CAAC,KAClB,EAAc;CAElB,GAAG;EAAC;EAAa;EAAoB;CAAa,CAAC;CAGnD,IAAM,IAAiB,QACd,GAAM,OAAO,SAAQ,MAAQ,EAAK,OAAO,KAAK,CAAC,GACrD,CAAC,CAAI,CAAC,GAGH,IAAsB,QACrB,EAAW,KAAK,IAGd,EAAe,QAAO,MAC3B,EAAW,MAAM,YAAY,EAAE,SAAS,EAAW,YAAY,CAAC,CAClE,IAJS,GAKR,CAAC,GAAgB,CAAU,CAAC;CAc/B,OAZI,IACK,kBAAC,GAAD,CAAiB,CAAA,IAErB,GAAM,QAUT,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD;GACE,WAAA;GACA,SAAQ;GACR,OAAO;GACP,WAAU,MAAK,EAAc,EAAE,OAAO,KAAK;GAC3C,WAAW,EAAO;GAClB,aAAY;GACZ,WAAW,EACT,OAAO;IACL,gBACE,kBAAC,GAAD;KACE,MAAK;KACL,MAAM;KACN,WAAW,EAAO;IACnB,CAAA;IAEH,cACE,kBAAA,GAAA,EAAA,UACG,EAAW,SAAS,KACnB,kBAAC,GAAD;KACE,MAAK;KACL,MAAK;KACL,eAAe;MACb,EAAc,EAAE;KAClB;IACD,CAAA,EAEH,CAAA;GAEN,EACF;EACD,CAAA;EACD,kBAAC,GAAD;GAAK,WAAW,EAAO;aACrB,kBAAC,GAAD;IAAa,WAAA;cACX,kBAAC,GAAD;KAAW,WAAW,EAAO;eAA7B,CACG,EAAoB,KAAI,MACvB,kBAAC,GAAD;MACE,SACE,kBAAC,GAAD,EAAU,YAAY,EAAE,cAAc,EAAW,KAAM,EAAI,CAAA;MAG7D,OACE,kBAAC,GAAD;OAAK,WAAW,EAAO;iBAAvB,CACG,EAAW,MACX,EAAW,iCACV,EAAW,8BAA8B,SAAS,KAChD,kBAAC,GAAD;QAAK,WAAW,EAAO;kBACrB,kBAAC,GAAD;SACE,cACE,EAAW;SAEb,WAAW;QACZ,CAAA;OACE,CAAA,CAEN;;MAEP,SAAS,EAAY,SAAS,EAAW,EAAG;MAC5C,gBAAgB;OACd,AAAI,EAAY,SAAS,EAAW,EAAG,IACrC,EAAS,EAAY,QAAO,MAAM,MAAO,EAAW,EAAE,CAAC,IAEvD,EAAS,CAAC,GAAG,GAAa,EAAW,EAAG,CAAC;MAE7C;KACD,GAzBM,EAAW,EAyBjB,CACF,GACA,EAAoB,WAAW,KAC9B,kBAAC,GAAD;MAAK,WAAW,EAAO;gBAAY;KAAyB,CAAA,CAErD;;GACA,CAAA;EACV,CAAA;EACJ,KACC,kBAAC,GAAD;GAAK,WAAW,EAAO;aACrB,kBAAC,GAAD,CAAiB,CAAA;EACd,CAAA;CAEP,EAAA,CAAA,IAtFA,kBAAC,GAAD;EAAO,UAAS;YAAQ;CAEjB,CAAA;AAsFb"}
@@ -1 +1 @@
1
- {"version":3,"file":"ExperimentalMode.d.ts","sourceRoot":"","sources":["../../../src/components/ExperimentalMode/ExperimentalMode.tsx"],"names":[],"mappings":"AAYA,MAAM,MAAM,qBAAqB,GAAG;IAClC,wBAAwB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAA;CACvD,CAAA;AACD,iBAAS,gBAAgB,CAAC,EAAE,wBAAwB,EAAE,EAAE,qBAAqB,2CAgF5E;AAED,eAAe,gBAAgB,CAAA"}
1
+ {"version":3,"file":"ExperimentalMode.d.ts","sourceRoot":"","sources":["../../../src/components/ExperimentalMode/ExperimentalMode.tsx"],"names":[],"mappings":"AAUA,MAAM,MAAM,qBAAqB,GAAG;IAClC,wBAAwB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAA;CACvD,CAAA;AACD,iBAAS,gBAAgB,CAAC,EAAE,wBAAwB,EAAE,EAAE,qBAAqB,2CAwE5E;AAED,eAAe,gBAAgB,CAAA"}