synapse-react-client 4.0.18 → 4.0.20

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 (1609) hide show
  1. package/dist/SWC.index.d.ts +3 -1
  2. package/dist/SWC.index.d.ts.map +1 -1
  3. package/dist/SWC.index.js +3 -1
  4. package/dist/SWC.index.js.map +1 -1
  5. package/dist/aridhia-queries/aridhiaTokenExchange.js.map +1 -1
  6. package/dist/aridhia-queries/useGetAridhiaRequests.js.map +1 -1
  7. package/dist/assets/DefaultColorfulPortalCardBackground.js.map +1 -1
  8. package/dist/assets/GoogleIcon.js.map +1 -1
  9. package/dist/assets/GoogleIcon24.js.map +1 -1
  10. package/dist/assets/homepage/BlinkingLiveIcon.d.ts +1 -1
  11. package/dist/assets/homepage/BlinkingLiveIcon.js.map +1 -1
  12. package/dist/assets/homepage/aacr.js.map +1 -1
  13. package/dist/assets/homepage/cri.js.map +1 -1
  14. package/dist/assets/homepage/ctf.js.map +1 -1
  15. package/dist/assets/homepage/egress.js.map +1 -1
  16. package/dist/assets/homepage/facebook.js.map +1 -1
  17. package/dist/assets/homepage/fisma.js.map +1 -1
  18. package/dist/assets/homepage/gff.js.map +1 -1
  19. package/dist/assets/homepage/github.js.map +1 -1
  20. package/dist/assets/homepage/gray.js.map +1 -1
  21. package/dist/assets/homepage/hipaa-compliant.js.map +1 -1
  22. package/dist/assets/homepage/instagram.js.map +1 -1
  23. package/dist/assets/homepage/linkedin.js.map +1 -1
  24. package/dist/assets/homepage/ml-commons.js.map +1 -1
  25. package/dist/assets/homepage/nih-aging.js.map +1 -1
  26. package/dist/assets/homepage/nih-heart.js.map +1 -1
  27. package/dist/assets/homepage/nih-nci.js.map +1 -1
  28. package/dist/assets/homepage/nih-nimh.js.map +1 -1
  29. package/dist/assets/homepage/ntap.js.map +1 -1
  30. package/dist/assets/homepage/plan-item.js.map +1 -1
  31. package/dist/assets/homepage/powered-by-synapse-feature.js.map +1 -1
  32. package/dist/assets/homepage/precision-governance-feature.js.map +1 -1
  33. package/dist/assets/homepage/python.js.map +1 -1
  34. package/dist/assets/homepage/r.js.map +1 -1
  35. package/dist/assets/homepage/research-credit-feature.js.map +1 -1
  36. package/dist/assets/homepage/seamless-integration-feature.js.map +1 -1
  37. package/dist/assets/homepage/sloan.js.map +1 -1
  38. package/dist/assets/homepage/twitter.js.map +1 -1
  39. package/dist/assets/homepage/users.js.map +1 -1
  40. package/dist/assets/homepage/youtube.js.map +1 -1
  41. package/dist/assets/icons/AccessDataAnywhere.js.map +1 -1
  42. package/dist/assets/icons/AccessPending.js.map +1 -1
  43. package/dist/assets/icons/AccessPendingCloud.js.map +1 -1
  44. package/dist/assets/icons/AddAd.js.map +1 -1
  45. package/dist/assets/icons/AddToList.js.map +1 -1
  46. package/dist/assets/icons/Alert.js.map +1 -1
  47. package/dist/assets/icons/Arrow.js.map +1 -1
  48. package/dist/assets/icons/AwardScroll.js.map +1 -1
  49. package/dist/assets/icons/Baseline.js.map +1 -1
  50. package/dist/assets/icons/Cavatica.js.map +1 -1
  51. package/dist/assets/icons/CertifiedUser.js.map +1 -1
  52. package/dist/assets/icons/Challenge.js.map +1 -1
  53. package/dist/assets/icons/Checkbox/Checked.js.map +1 -1
  54. package/dist/assets/icons/Checkbox/Checked2.js.map +1 -1
  55. package/dist/assets/icons/Checkbox/Indeterminate.js.map +1 -1
  56. package/dist/assets/icons/Checkbox/Indeterminate2.js.map +1 -1
  57. package/dist/assets/icons/Checkbox/Unchecked.js.map +1 -1
  58. package/dist/assets/icons/Checkbox/Unchecked2.js.map +1 -1
  59. package/dist/assets/icons/ClappingHands.js.map +1 -1
  60. package/dist/assets/icons/CloudWarning.js.map +1 -1
  61. package/dist/assets/icons/CommunicateFindings.js.map +1 -1
  62. package/dist/assets/icons/CreateVersion.js.map +1 -1
  63. package/dist/assets/icons/DNA_Two.js.map +1 -1
  64. package/dist/assets/icons/Data2.js.map +1 -1
  65. package/dist/assets/icons/DoubleQuotes.js.map +1 -1
  66. package/dist/assets/icons/EmailAddressAdornment.js.map +1 -1
  67. package/dist/assets/icons/FileWithShield.js.map +1 -1
  68. package/dist/assets/icons/FileWithShield2.js.map +1 -1
  69. package/dist/assets/icons/FrontHand.js.map +1 -1
  70. package/dist/assets/icons/HandWithMoney.js.map +1 -1
  71. package/dist/assets/icons/IconCopy.js.map +1 -1
  72. package/dist/assets/icons/IconMinus.js.map +1 -1
  73. package/dist/assets/icons/IconPlus.js.map +1 -1
  74. package/dist/assets/icons/Java.js.map +1 -1
  75. package/dist/assets/icons/MintDoi.js.map +1 -1
  76. package/dist/assets/icons/MultiFile.js.map +1 -1
  77. package/dist/assets/icons/MultiFile2.js.map +1 -1
  78. package/dist/assets/icons/NoData.js.map +1 -1
  79. package/dist/assets/icons/NoSearchResults.js.map +1 -1
  80. package/dist/assets/icons/ORCIDIcon.js.map +1 -1
  81. package/dist/assets/icons/OpenBook.js.map +1 -1
  82. package/dist/assets/icons/Podium.js.map +1 -1
  83. package/dist/assets/icons/Python.js.map +1 -1
  84. package/dist/assets/icons/QueryStructuredData.js.map +1 -1
  85. package/dist/assets/icons/RLogo.js.map +1 -1
  86. package/dist/assets/icons/RecordProvenance.js.map +1 -1
  87. package/dist/assets/icons/RosetteRibbon.js.map +1 -1
  88. package/dist/assets/icons/SageFullLogo.js.map +1 -1
  89. package/dist/assets/icons/SearchImage.js.map +1 -1
  90. package/dist/assets/icons/ShareYourResearch.js.map +1 -1
  91. package/dist/assets/icons/Sort.js.map +1 -1
  92. package/dist/assets/icons/StarTrophy.js.map +1 -1
  93. package/dist/assets/icons/SynapseFullLogo.js.map +1 -1
  94. package/dist/assets/icons/SynapseIconWhite.js.map +1 -1
  95. package/dist/assets/icons/SynapseLogoName.js.map +1 -1
  96. package/dist/assets/icons/TasksIcon.js.map +1 -1
  97. package/dist/assets/icons/Terminal.js.map +1 -1
  98. package/dist/assets/icons/ThreeStars.js.map +1 -1
  99. package/dist/assets/icons/UnpackagableFile.js.map +1 -1
  100. package/dist/assets/icons/UnpackagableFile2.js.map +1 -1
  101. package/dist/assets/icons/ValidatedProfile.js.map +1 -1
  102. package/dist/assets/icons/account-certified.js.map +1 -1
  103. package/dist/assets/icons/account-enabled-mfa.js.map +1 -1
  104. package/dist/assets/icons/account-validated.js.map +1 -1
  105. package/dist/assets/icons/bioChemicalPhysical.js.map +1 -1
  106. package/dist/assets/icons/chart2.js.map +1 -1
  107. package/dist/assets/icons/columns.js.map +1 -1
  108. package/dist/assets/icons/columnsDarkTheme.js.map +1 -1
  109. package/dist/assets/icons/computationalTool.js.map +1 -1
  110. package/dist/assets/icons/dataReuse.js.map +1 -1
  111. package/dist/assets/icons/emailAddressAdornment2.js.map +1 -1
  112. package/dist/assets/icons/emailWithNotification.js.map +1 -1
  113. package/dist/assets/icons/error_page/maintenance.js.map +1 -1
  114. package/dist/assets/icons/error_page/no-access.js.map +1 -1
  115. package/dist/assets/icons/error_page/unavailable.js.map +1 -1
  116. package/dist/assets/icons/file.js.map +1 -1
  117. package/dist/assets/icons/inSilicoModel.js.map +1 -1
  118. package/dist/assets/icons/institution.js.map +1 -1
  119. package/dist/assets/icons/json-form-tool-no-submissions.js.map +1 -1
  120. package/dist/assets/icons/modelSystem.js.map +1 -1
  121. package/dist/assets/icons/mouse.js.map +1 -1
  122. package/dist/assets/icons/organizations.js.map +1 -1
  123. package/dist/assets/icons/person.js.map +1 -1
  124. package/dist/assets/icons/spatialProfiling.js.map +1 -1
  125. package/dist/assets/icons/standardDataModel.js.map +1 -1
  126. package/dist/assets/icons/study-active.js.map +1 -1
  127. package/dist/assets/icons/study-complete.js.map +1 -1
  128. package/dist/assets/icons/subscribe_plus.js.map +1 -1
  129. package/dist/assets/icons/synapse-logo.js.map +1 -1
  130. package/dist/assets/icons/terms/CheckIcon.js.map +1 -1
  131. package/dist/assets/icons/translational.js.map +1 -1
  132. package/dist/assets/icons/tree_horizontal.js.map +1 -1
  133. package/dist/assets/illustrations/acknowledgement_statements_illustration.js.map +1 -1
  134. package/dist/assets/illustrations/challenges_illustration.js.map +1 -1
  135. package/dist/assets/illustrations/cohort_builder_illustration.js.map +1 -1
  136. package/dist/assets/illustrations/data_access_management_illustration.js.map +1 -1
  137. package/dist/assets/illustrations/datasets_illustration.js.map +1 -1
  138. package/dist/assets/illustrations/diagonalLinePattern.js.map +1 -1
  139. package/dist/assets/illustrations/discussions_illustration.js.map +1 -1
  140. package/dist/assets/illustrations/docker_illustration.js.map +1 -1
  141. package/dist/assets/illustrations/donation_illustration.js.map +1 -1
  142. package/dist/assets/illustrations/favorites_illustration.js.map +1 -1
  143. package/dist/assets/illustrations/files_illustration.js.map +1 -1
  144. package/dist/assets/illustrations/following_illustration.js.map +1 -1
  145. package/dist/assets/illustrations/index.js.map +1 -1
  146. package/dist/assets/illustrations/left_dot_blob_dark_illustration.js.map +1 -1
  147. package/dist/assets/illustrations/left_dot_blob_illustration.js.map +1 -1
  148. package/dist/assets/illustrations/projects_illustration.js.map +1 -1
  149. package/dist/assets/illustrations/right_dot_blob_dark_illustration.js.map +1 -1
  150. package/dist/assets/illustrations/right_dot_blob_illustration.js.map +1 -1
  151. package/dist/assets/illustrations/tables_illustration.js.map +1 -1
  152. package/dist/assets/illustrations/teams_illustration.js.map +1 -1
  153. package/dist/assets/illustrations/trash_can_illustration.js.map +1 -1
  154. package/dist/assets/illustrations/underconstruction_illustration.js.map +1 -1
  155. package/dist/assets/illustrations/wikis_illustration.js.map +1 -1
  156. package/dist/assets/logos/other/ad-workbench-logo.js.map +1 -1
  157. package/dist/assets/logos/other/cavatica-logo.js.map +1 -1
  158. package/dist/assets/logos/other/pluto-logo.js.map +1 -1
  159. package/dist/assets/logos/other/terra-logo.js.map +1 -1
  160. package/dist/assets/mui_components/AccessManagement.js.map +1 -1
  161. package/dist/assets/mui_components/AccountCertified.js.map +1 -1
  162. package/dist/assets/mui_components/AccountRegistered.js.map +1 -1
  163. package/dist/assets/mui_components/AccountValidated.js.map +1 -1
  164. package/dist/assets/mui_components/ActionKey.js.map +1 -1
  165. package/dist/assets/mui_components/BioChemicalPhysical.js.map +1 -1
  166. package/dist/assets/mui_components/Chromatin.js.map +1 -1
  167. package/dist/assets/mui_components/Clinical.js.map +1 -1
  168. package/dist/assets/mui_components/ComputationalTool.js.map +1 -1
  169. package/dist/assets/mui_components/Data.js.map +1 -1
  170. package/dist/assets/mui_components/DataLocked.js.map +1 -1
  171. package/dist/assets/mui_components/DataReuse.js.map +1 -1
  172. package/dist/assets/mui_components/Dataset.js.map +1 -1
  173. package/dist/assets/mui_components/DatasetCollection.js.map +1 -1
  174. package/dist/assets/mui_components/Docker.js.map +1 -1
  175. package/dist/assets/mui_components/GeneExpression.js.map +1 -1
  176. package/dist/assets/mui_components/GeneVariants.js.map +1 -1
  177. package/dist/assets/mui_components/HelpChatBubble.js.map +1 -1
  178. package/dist/assets/mui_components/Imaging.js.map +1 -1
  179. package/dist/assets/mui_components/InSilicoModel.js.map +1 -1
  180. package/dist/assets/mui_components/Kinomics.js.map +1 -1
  181. package/dist/assets/mui_components/LineGraph.js.map +1 -1
  182. package/dist/assets/mui_components/ModelSystem.js.map +1 -1
  183. package/dist/assets/mui_components/Other.js.map +1 -1
  184. package/dist/assets/mui_components/PackagableFile.js.map +1 -1
  185. package/dist/assets/mui_components/PackagableFile2.js.map +1 -1
  186. package/dist/assets/mui_components/Proteomics.js.map +1 -1
  187. package/dist/assets/mui_components/Rat.js.map +1 -1
  188. package/dist/assets/mui_components/SpatialProfiling.js.map +1 -1
  189. package/dist/assets/sustainability/darkDialPosition1.js.map +1 -1
  190. package/dist/assets/sustainability/darkDialPosition2.js.map +1 -1
  191. package/dist/assets/sustainability/darkDialPosition3.js.map +1 -1
  192. package/dist/assets/sustainability/darkDialPosition4.js.map +1 -1
  193. package/dist/assets/sustainability/dialPosition1.js.map +1 -1
  194. package/dist/assets/sustainability/dialPosition2.js.map +1 -1
  195. package/dist/assets/sustainability/dialPosition3.js.map +1 -1
  196. package/dist/assets/sustainability/dialPosition4.js.map +1 -1
  197. package/dist/assets/themed_icons/Active.js.map +1 -1
  198. package/dist/assets/themed_icons/Chart.js.map +1 -1
  199. package/dist/assets/themed_icons/Close.js.map +1 -1
  200. package/dist/assets/themed_icons/Collapse.js.map +1 -1
  201. package/dist/assets/themed_icons/Columns.js.map +1 -1
  202. package/dist/assets/themed_icons/ColumnsDark.js.map +1 -1
  203. package/dist/assets/themed_icons/Database.js.map +1 -1
  204. package/dist/assets/themed_icons/Download.js.map +1 -1
  205. package/dist/assets/themed_icons/Expand.js.map +1 -1
  206. package/dist/assets/themed_icons/Explore.js.map +1 -1
  207. package/dist/assets/themed_icons/ExternalLink.js.map +1 -1
  208. package/dist/assets/themed_icons/Filter.js.map +1 -1
  209. package/dist/assets/themed_icons/Program.js.map +1 -1
  210. package/dist/assets/themed_icons/Project.js.map +1 -1
  211. package/dist/assets/themed_icons/Publication.js.map +1 -1
  212. package/dist/assets/themed_icons/Search.js.map +1 -1
  213. package/dist/assets/themed_icons/Settings.js.map +1 -1
  214. package/dist/assets/themed_icons/SortDown.js.map +1 -1
  215. package/dist/assets/themed_icons/SortUp.js.map +1 -1
  216. package/dist/assets/themed_icons/SqlEditorIcon.js.map +1 -1
  217. package/dist/assets/themed_icons/Study.js.map +1 -1
  218. package/dist/assets/themed_icons/ToolClinical.js.map +1 -1
  219. package/dist/assets/themed_icons/ToolComputational.js.map +1 -1
  220. package/dist/assets/themed_icons/ToolExperimental.js.map +1 -1
  221. package/dist/assets/themed_icons/VerticalDots.js.map +1 -1
  222. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js.map +1 -1
  223. package/dist/components/AccessRequirement/EntityActionsRequired.js.map +1 -1
  224. package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.js.map +1 -1
  225. package/dist/components/AccessRequirementAclEditor/AccessRequirementAclEditor.js.map +1 -1
  226. package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js +10 -11
  227. package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js.map +1 -1
  228. package/dist/components/AccessRequirementList/AccessRequirementList.js +73 -76
  229. package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
  230. package/dist/components/AccessRequirementList/AccessRequirementListItem.js.map +1 -1
  231. package/dist/components/AccessRequirementList/AccessRequirementListUtils.js.map +1 -1
  232. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/CancelRequestDataAccess.js.map +1 -1
  233. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js.map +1 -1
  234. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js.map +1 -1
  235. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DocumentTemplate.js.map +1 -1
  236. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.js.map +1 -1
  237. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItem.js.map +1 -1
  238. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItemView.js.map +1 -1
  239. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestDataAccessSuccess.js.map +1 -1
  240. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js.map +1 -1
  241. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/UploadDocumentField.js.map +1 -1
  242. package/dist/components/AccessRequirementList/RequirementItem/AuthenticatedRequirement.js.map +1 -1
  243. package/dist/components/AccessRequirementList/RequirementItem/CertificationRequirement.js.map +1 -1
  244. package/dist/components/AccessRequirementList/RequirementItem/LockAccessRequirementItem.js.map +1 -1
  245. package/dist/components/AccessRequirementList/RequirementItem/RequirementItem.js.map +1 -1
  246. package/dist/components/AccessRequirementList/RequirementItem/SelfSignAccessRequirementItem.js.map +1 -1
  247. package/dist/components/AccessRequirementList/RequirementItem/TwoFactorAuthEnabledRequirement.js.map +1 -1
  248. package/dist/components/AccessRequirementList/RequirementItem/UnmanagedACTAccessRequirementItem.js.map +1 -1
  249. package/dist/components/AccessRequirementList/RequirementItem/ValidationRequirement.js.map +1 -1
  250. package/dist/components/AccessRequirementRelatedProjectsList/AccessRequirementRelatedProjectsList.js.map +1 -1
  251. package/dist/components/AccessTokenPage/AccessTokenCard/AccessTokenCard.js.map +1 -1
  252. package/dist/components/AccessTokenPage/AccessTokenPage.js.map +1 -1
  253. package/dist/components/AccessTokenPage/CreateAccessTokenModal.js.map +1 -1
  254. package/dist/components/AccountLevelBadge/AccountLevelBadge.js.map +1 -1
  255. package/dist/components/AccountLevelBadges/AccountLevelBadges.js.map +1 -1
  256. package/dist/components/AccountLevelBadges/useRevokeCertificationUI.js.map +1 -1
  257. package/dist/components/AcknowledgementsPage/AcknowledgementsDialog.js.map +1 -1
  258. package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js.map +1 -1
  259. package/dist/components/AcknowledgementsPage/StudyAcknowledgement.js.map +1 -1
  260. package/dist/components/AcknowledgementsPage/StudyAcknowledgements.js.map +1 -1
  261. package/dist/components/AclEditor/AclEditor.js.map +1 -1
  262. package/dist/components/AclEditor/AclEditor.test-utils.js.map +1 -1
  263. package/dist/components/AclEditor/AclEditorSkeleton.js.map +1 -1
  264. package/dist/components/AclEditor/PermissionLevelMenu.js.map +1 -1
  265. package/dist/components/AclEditor/ReadOnlyPermissionLevel.js.map +1 -1
  266. package/dist/components/AclEditor/ResourceAccessAndUserGroupHeader.js +2 -4
  267. package/dist/components/AclEditor/ResourceAccessAndUserGroupHeader.js.map +1 -1
  268. package/dist/components/AclEditor/ResourceAccessItem.js.map +1 -1
  269. package/dist/components/AclEditor/useSortResourceAccessList.js.map +1 -1
  270. package/dist/components/AclEditor/useUpdateAcl.js.map +1 -1
  271. package/dist/components/AdaptiveTwoColumnLayout/AdaptiveTwoColumnLayout.js.map +1 -1
  272. package/dist/components/AddToDownloadListV2.js.map +1 -1
  273. package/dist/components/Aridhia/AridhiaAccessStatus.js.map +1 -1
  274. package/dist/components/Aridhia/aridhiaAccessStatusUtils.js.map +1 -1
  275. package/dist/components/Authentication/AuthenticationMethodSelection.js.map +1 -1
  276. package/dist/components/Authentication/LastLoginInfo.js.map +1 -1
  277. package/dist/components/Authentication/LoginFlowBackButton.js.map +1 -1
  278. package/dist/components/Authentication/LoginForm.js.map +1 -1
  279. package/dist/components/Authentication/LoginMethod.js.map +1 -1
  280. package/dist/components/Authentication/LoginMethodButton.js.map +1 -1
  281. package/dist/components/Authentication/Logout.js.map +1 -1
  282. package/dist/components/Authentication/OneTimePasswordForm.js.map +1 -1
  283. package/dist/components/Authentication/PasswordField.js.map +1 -1
  284. package/dist/components/Authentication/RecoveryCodeForm.js.map +1 -1
  285. package/dist/components/Authentication/RecoveryCodeGrid.js.map +1 -1
  286. package/dist/components/Authentication/RegenerateBackupCodesWarning.js.map +1 -1
  287. package/dist/components/Authentication/Reset2FAWarning.js.map +1 -1
  288. package/dist/components/Authentication/StandaloneLoginForm.js.map +1 -1
  289. package/dist/components/Authentication/TOTPForm.js.map +1 -1
  290. package/dist/components/Authentication/TwoFactorAuthSettingsPanel.js.map +1 -1
  291. package/dist/components/Authentication/TwoFactorBackupCodes.js.map +1 -1
  292. package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
  293. package/dist/components/Authentication/TwoFactorSecretDialog.js.map +1 -1
  294. package/dist/components/Authentication/UsernamePasswordForm.js.map +1 -1
  295. package/dist/components/BasePortalCard/BasePortalCard.js.map +1 -1
  296. package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.js.map +1 -1
  297. package/dist/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
  298. package/dist/components/CTASectionWrapper/CTASectionWrapper.js.map +1 -1
  299. package/dist/components/CannedRejectionDialog/CannedRejectionDialog.js.map +1 -1
  300. package/dist/components/CardContainer/CardContainer.js.map +1 -1
  301. package/dist/components/CardContainerLogic/CardContainerLogic.js.map +1 -1
  302. package/dist/components/CardDeck/CardDeck.Desktop.js.map +1 -1
  303. package/dist/components/CardDeck/CardDeck.Mobile.js.map +1 -1
  304. package/dist/components/CardDeck/CardDeck.js.map +1 -1
  305. package/dist/components/CardDeck/TableQueryCardDeck.js.map +1 -1
  306. package/dist/components/CardGridWithLinks/CardGridWithLinks.js.map +1 -1
  307. package/dist/components/CertificationQuiz/CertificationAnswer.js.map +1 -1
  308. package/dist/components/CertificationQuiz/CertificationQuiz.js.map +1 -1
  309. package/dist/components/ChallengeDataDownload/ChallengeDataDownload.js.map +1 -1
  310. package/dist/components/ChallengeDetailPage/ChallengeDetailPage.js.map +1 -1
  311. package/dist/components/ChallengeRegisterButton/ChallengeRegisterButton.js.map +1 -1
  312. package/dist/components/ChallengeRequirementsModal/ChallengeRequirementsModal.js.map +1 -1
  313. package/dist/components/ChallengeSubmission/AddExternalRepo.js.map +1 -1
  314. package/dist/components/ChallengeSubmission/AvailableEvaluationQueueList.js.map +1 -1
  315. package/dist/components/ChallengeSubmission/ChallengeSubmission.js.map +1 -1
  316. package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js +62 -64
  317. package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js.map +1 -1
  318. package/dist/components/ChallengeSubmission/EvaluationQueueCurrentRoundInfo.js.map +1 -1
  319. package/dist/components/ChallengeSubmission/EvaluationQueueList.js.map +1 -1
  320. package/dist/components/ChallengeSubmission/SubmissionCommitList.js.map +1 -1
  321. package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js.map +1 -1
  322. package/dist/components/ChallengeTeamWizard/ChallengeTeamSearch.js.map +1 -1
  323. package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.js.map +1 -1
  324. package/dist/components/ChallengeTeamWizard/ChallengeTeamWizard.js +96 -102
  325. package/dist/components/ChallengeTeamWizard/ChallengeTeamWizard.js.map +1 -1
  326. package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js.map +1 -1
  327. package/dist/components/ChallengeTeamWizard/MembershipRequestForm.js.map +1 -1
  328. package/dist/components/ChallengeTeamWizard/OpenMembershipInvitation.js.map +1 -1
  329. package/dist/components/ChallengeTeamWizard/RegistrationSuccessful.js.map +1 -1
  330. package/dist/components/ChallengeTeamWizard/SelectChallengeTeam.js.map +1 -1
  331. package/dist/components/ChallengeTeamWizard/useCreateAndRegisterChallengeTeam.js.map +1 -1
  332. package/dist/components/ChangePassword/ChangePassword.js.map +1 -1
  333. package/dist/components/ChangePassword/ChangePasswordWithToken.js.map +1 -1
  334. package/dist/components/ChangePassword/useChangePasswordFormState.js.map +1 -1
  335. package/dist/components/CitationPopover/CitationPopover.js.map +1 -1
  336. package/dist/components/CitationPopover/CitationPopoverContent.js.map +1 -1
  337. package/dist/components/CitationPopover/CitationPopoverUtils.js.map +1 -1
  338. package/dist/components/CitationPopover/useCitation.js.map +1 -1
  339. package/dist/components/ColorGradient/ColorGradient.js.map +1 -1
  340. package/dist/components/ColoredBulletListItem/ColoredBulletListItem.js.map +1 -1
  341. package/dist/components/ColumnFilter/ColumnFilter.js.map +1 -1
  342. package/dist/components/ComponentCollapse.js.map +1 -1
  343. package/dist/components/ConfirmationDialog/ConfirmationDialog.js.map +1 -1
  344. package/dist/components/CookiesNotification/CookiePreferencesDialog.js.map +1 -1
  345. package/dist/components/CookiesNotification/CookiesNotification.d.ts.map +1 -1
  346. package/dist/components/CookiesNotification/CookiesNotification.js +9 -9
  347. package/dist/components/CookiesNotification/CookiesNotification.js.map +1 -1
  348. package/dist/components/CopyToClipboardIcon.js.map +1 -1
  349. package/dist/components/CopyToClipboardInput/CopyToClipboardInput.js.map +1 -1
  350. package/dist/components/CopyToClipboardString/CopyToClipboardString.js.map +1 -1
  351. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js.map +1 -1
  352. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizardUtils.js.map +1 -1
  353. package/dist/components/CreateProjectModal/CreateProjectModal.js.map +1 -1
  354. package/dist/components/CreateProjectModal/ProjectVisibilityRadioGroup.js.map +1 -1
  355. package/dist/components/CreateTableViewWizard/CreateTableViewWizard.js.map +1 -1
  356. package/dist/components/CreateTableViewWizard/CreateTableViewWizardUtils.js.map +1 -1
  357. package/dist/components/CreateTableViewWizard/TableNameForm.js.map +1 -1
  358. package/dist/components/CreateTableViewWizard/TableTypeSelection.js.map +1 -1
  359. package/dist/components/CreateTableViewWizard/ViewTypeSelection.js.map +1 -1
  360. package/dist/components/CrispChat/CrispChat.js.map +1 -1
  361. package/dist/components/DataExplorer/DataExplorer.css +1 -0
  362. package/dist/components/DataExplorer/DataExplorer.d.ts +13 -0
  363. package/dist/components/DataExplorer/DataExplorer.d.ts.map +1 -0
  364. package/dist/components/DataExplorer/DataExplorer.js +116 -0
  365. package/dist/components/DataExplorer/DataExplorer.js.map +1 -0
  366. package/dist/components/DataExplorer/DataExplorer.module.js +22 -0
  367. package/dist/components/DataExplorer/DataExplorer.module.js.map +1 -0
  368. package/dist/components/DataExplorer/DataExplorer.module.scss +156 -0
  369. package/dist/components/DataGrid/DataGrid.js +72 -72
  370. package/dist/components/DataGrid/DataGrid.js.map +1 -1
  371. package/dist/components/DataGrid/DataGridTypes.js.map +1 -1
  372. package/dist/components/DataGrid/DataGridWebSocket.d.ts +2 -0
  373. package/dist/components/DataGrid/DataGridWebSocket.d.ts.map +1 -1
  374. package/dist/components/DataGrid/DataGridWebSocket.js +9 -10
  375. package/dist/components/DataGrid/DataGridWebSocket.js.map +1 -1
  376. package/dist/components/DataGrid/MergeGridWithSourceTableButton.js.map +1 -1
  377. package/dist/components/DataGrid/StartGridSession.js.map +1 -1
  378. package/dist/components/DataGrid/SynapseGrid.d.ts +3 -1
  379. package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
  380. package/dist/components/DataGrid/SynapseGrid.js +219 -211
  381. package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
  382. package/dist/components/DataGrid/columns/AutocompleteColumn.d.ts.map +1 -1
  383. package/dist/components/DataGrid/columns/AutocompleteColumn.js +106 -102
  384. package/dist/components/DataGrid/columns/AutocompleteColumn.js.map +1 -1
  385. package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.d.ts.map +1 -1
  386. package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.js +97 -89
  387. package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.js.map +1 -1
  388. package/dist/components/DataGrid/columns/DateTimeColumn.js.map +1 -1
  389. package/dist/components/DataGrid/columns/GridAutocompleteChip.js.map +1 -1
  390. package/dist/components/DataGrid/columns/useGridAutocompleteState.d.ts +19 -8
  391. package/dist/components/DataGrid/columns/useGridAutocompleteState.d.ts.map +1 -1
  392. package/dist/components/DataGrid/columns/useGridAutocompleteState.js +64 -43
  393. package/dist/components/DataGrid/columns/useGridAutocompleteState.js.map +1 -1
  394. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js.map +1 -1
  395. package/dist/components/DataGrid/components/ExportCsvFromGridButton.js.map +1 -1
  396. package/dist/components/DataGrid/components/GridMenuButton/GridMenuButton.js.map +1 -1
  397. package/dist/components/DataGrid/components/GridSessionSelectionField.js.map +1 -1
  398. package/dist/components/DataGrid/components/UploadCsvToGridButton.js.map +1 -1
  399. package/dist/components/DataGrid/components/UploadCsvToGridDialog.d.ts.map +1 -1
  400. package/dist/components/DataGrid/components/UploadCsvToGridDialog.js +9 -9
  401. package/dist/components/DataGrid/components/UploadCsvToGridDialog.js.map +1 -1
  402. package/dist/components/DataGrid/components/ValidationAlert.js.map +1 -1
  403. package/dist/components/DataGrid/components/contextMenu.js.map +1 -1
  404. package/dist/components/DataGrid/hooks/useColumnResizeHandles.js +2 -0
  405. package/dist/components/DataGrid/hooks/useColumnResizeHandles.js.map +1 -1
  406. package/dist/components/DataGrid/hooks/useExportDataGridToCsv.js.map +1 -1
  407. package/dist/components/DataGrid/hooks/useGetSchemaForGrid.d.ts.map +1 -1
  408. package/dist/components/DataGrid/hooks/useGetSchemaForGrid.js +8 -1
  409. package/dist/components/DataGrid/hooks/useGetSchemaForGrid.js.map +1 -1
  410. package/dist/components/DataGrid/hooks/useGridReplicaUsers.js.map +1 -1
  411. package/dist/components/DataGrid/hooks/useGridUndoRedo.js.map +1 -1
  412. package/dist/components/DataGrid/hooks/useRemoteSelections.js.map +1 -1
  413. package/dist/components/DataGrid/hooks/useStack.js.map +1 -1
  414. package/dist/components/DataGrid/useCRDTModelView.js.map +1 -1
  415. package/dist/components/DataGrid/useDataGridWebsocket.d.ts +2 -0
  416. package/dist/components/DataGrid/useDataGridWebsocket.d.ts.map +1 -1
  417. package/dist/components/DataGrid/useDataGridWebsocket.js +12 -2
  418. package/dist/components/DataGrid/useDataGridWebsocket.js.map +1 -1
  419. package/dist/components/DataGrid/useInitializeGridConnection.js.map +1 -1
  420. package/dist/components/DataGrid/useMergeGridWithRecordSet.js.map +1 -1
  421. package/dist/components/DataGrid/useMergeGridWithSource.js.map +1 -1
  422. package/dist/components/DataGrid/useMergeGridWithTable.js.map +1 -1
  423. package/dist/components/DataGrid/utils/DataGridUtils.js.map +1 -1
  424. package/dist/components/DataGrid/utils/MessageCounter.js.map +1 -1
  425. package/dist/components/DataGrid/utils/applyModelChange.js.map +1 -1
  426. package/dist/components/DataGrid/utils/calculateColumnWidth.js.map +1 -1
  427. package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
  428. package/dist/components/DataGrid/utils/computeReplicaSelectionModel.js.map +1 -1
  429. package/dist/components/DataGrid/utils/convertActionToModelChange.js.map +1 -1
  430. package/dist/components/DataGrid/utils/createTestModel.js.map +1 -1
  431. package/dist/components/DataGrid/utils/enrichRowsWithChangeInfo.js.map +1 -1
  432. package/dist/components/DataGrid/utils/extractColumnValidationMessages.js.map +1 -1
  433. package/dist/components/DataGrid/utils/getCellAuthorSid.js.map +1 -1
  434. package/dist/components/DataGrid/utils/getCellClassName.js.map +1 -1
  435. package/dist/components/DataGrid/utils/getChangeTooltipText.js.map +1 -1
  436. package/dist/components/DataGrid/utils/getEmptyValue.js.map +1 -1
  437. package/dist/components/DataGrid/utils/getReplicaCategory.js.map +1 -1
  438. package/dist/components/DataGrid/utils/isValidationUpToDateForRow.js.map +1 -1
  439. package/dist/components/DataGrid/utils/json-rx/JsonRx.js.map +1 -1
  440. package/dist/components/DataGrid/utils/json-rx/JsonRxMessage.js.map +1 -1
  441. package/dist/components/DataGrid/utils/json-rx/JsonRxNotification.js.map +1 -1
  442. package/dist/components/DataGrid/utils/json-rx/JsonRxRequest.js.map +1 -1
  443. package/dist/components/DataGrid/utils/json-rx/JsonRxRequestComplete.js.map +1 -1
  444. package/dist/components/DataGrid/utils/json-rx/JsonRxResponse.js.map +1 -1
  445. package/dist/components/DataGrid/utils/json-rx/JsonRxResponseComplete.js.map +1 -1
  446. package/dist/components/DataGrid/utils/logicalTimestampToString.js.map +1 -1
  447. package/dist/components/DataGrid/utils/mapOperationsToModelChanges.js.map +1 -1
  448. package/dist/components/DataGrid/utils/modelColsToGrid.js.map +1 -1
  449. package/dist/components/DataGrid/utils/modelRowsToGrid.js.map +1 -1
  450. package/dist/components/DataGrid/utils/parseFreeTextUsingJsonSchemaType.js.map +1 -1
  451. package/dist/components/DataGrid/utils/replicaSelectionToGridSelection.js.map +1 -1
  452. package/dist/components/DataGrid/utils/schemaAwarePasteValue.js.map +1 -1
  453. package/dist/components/DataGrid/utils/splitPatch.js.map +1 -1
  454. package/dist/components/DatasetJsonLdScript.js.map +1 -1
  455. package/dist/components/DateTimePicker/DateTimePicker.js.map +1 -1
  456. package/dist/components/Dialog/ConfirmCloseWithoutSavingDialog.js.map +1 -1
  457. package/dist/components/DialogBase.js.map +1 -1
  458. package/dist/components/DirectDownload/DirectDownload.js.map +1 -1
  459. package/dist/components/DirectDownload/FileEntityDirectDownload.js.map +1 -1
  460. package/dist/components/DirectDownloadButton.js.map +1 -1
  461. package/dist/components/DownloadCart/ActionRequiredCard/ActionRequiredCard.js.map +1 -1
  462. package/dist/components/DownloadCart/ActionRequiredListItem.js.map +1 -1
  463. package/dist/components/DownloadCart/AvailableForDownloadTable.js.map +1 -1
  464. package/dist/components/DownloadCart/CreatePackageV2.js.map +1 -1
  465. package/dist/components/DownloadCart/DirectProgrammaticDownload.js.map +1 -1
  466. package/dist/components/DownloadCart/DownloadCartPage.js.map +1 -1
  467. package/dist/components/DownloadCart/DownloadDetails.js.map +1 -1
  468. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js.map +1 -1
  469. package/dist/components/DownloadCart/DownloadListActionsRequired.js.map +1 -1
  470. package/dist/components/DownloadCart/DownloadListStats.js.map +1 -1
  471. package/dist/components/DownloadCart/DownloadListTable.js.map +1 -1
  472. package/dist/components/DownloadCart/EnableTwoFaRequirementCard.js.map +1 -1
  473. package/dist/components/DownloadCart/MeetAccessRequirementCard.js.map +1 -1
  474. package/dist/components/DownloadCart/RequestDownloadCard.js.map +1 -1
  475. package/dist/components/DownloadCart/ShowDownloadV2.js.map +1 -1
  476. package/dist/components/DownloadCart/TableQueryActionsRequired.js.map +1 -1
  477. package/dist/components/DownloadCart/fileNameUtils.js.map +1 -1
  478. package/dist/components/DraggableDialog/DraggableDialog.js.map +1 -1
  479. package/dist/components/DropdownSelect/DropdownSelect.js.map +1 -1
  480. package/dist/components/DynamicForm/DynamicForm.js.map +1 -1
  481. package/dist/components/DynamicForm/DynamicFormModal.js.map +1 -1
  482. package/dist/components/Ecosystem/EcosystemCard.js.map +1 -1
  483. package/dist/components/Ecosystem/EcosystemLayout.js.map +1 -1
  484. package/dist/components/Ecosystem/EcosystemSkeleton.js.map +1 -1
  485. package/dist/components/Ecosystem/TableQueryEcosystem.js.map +1 -1
  486. package/dist/components/EntityAclEditor/CreateOrDeleteLocalSharingSettingsButton.js.map +1 -1
  487. package/dist/components/EntityAclEditor/EntityAclEditor.js.map +1 -1
  488. package/dist/components/EntityAclEditor/EntityAclEditorModal.js.map +1 -1
  489. package/dist/components/EntityAclEditor/InheritanceMessage.js.map +1 -1
  490. package/dist/components/EntityAclEditor/OpenData.js.map +1 -1
  491. package/dist/components/EntityAclEditor/useNotifyNewACLUsers.js.map +1 -1
  492. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js +68 -70
  493. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js.map +1 -1
  494. package/dist/components/EntityCitation/EntityCitation.js.map +1 -1
  495. package/dist/components/EntityCitation/EntityCitationUtils.js.map +1 -1
  496. package/dist/components/EntityDownloadButton/EntityDownloadButton.js +32 -35
  497. package/dist/components/EntityDownloadButton/EntityDownloadButton.js.map +1 -1
  498. package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js.map +1 -1
  499. package/dist/components/EntityFinder/Breadcrumbs.js.map +1 -1
  500. package/dist/components/EntityFinder/EntityFinder.js +134 -136
  501. package/dist/components/EntityFinder/EntityFinder.js.map +1 -1
  502. package/dist/components/EntityFinder/EntityFinderModal.js.map +1 -1
  503. package/dist/components/EntityFinder/EntityIdTextField.js.map +1 -1
  504. package/dist/components/EntityFinder/VersionSelectionType.js.map +1 -1
  505. package/dist/components/EntityFinder/details/EntityDetailsList.js +20 -20
  506. package/dist/components/EntityFinder/details/EntityDetailsList.js.map +1 -1
  507. package/dist/components/EntityFinder/details/configurations/EntityChildrenDetails.js.map +1 -1
  508. package/dist/components/EntityFinder/details/configurations/FavoritesDetails.js.map +1 -1
  509. package/dist/components/EntityFinder/details/configurations/ProjectListDetails.js.map +1 -1
  510. package/dist/components/EntityFinder/details/configurations/ReferenceDetails.js.map +1 -1
  511. package/dist/components/EntityFinder/details/configurations/SearchDetails.js.map +1 -1
  512. package/dist/components/EntityFinder/details/view/DetailsView.js +67 -67
  513. package/dist/components/EntityFinder/details/view/DetailsView.js.map +1 -1
  514. package/dist/components/EntityFinder/details/view/VersionColumnHeader.js +1 -1
  515. package/dist/components/EntityFinder/details/view/VersionColumnHeader.js.map +1 -1
  516. package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js.map +1 -1
  517. package/dist/components/EntityFinder/details/view/table/CreatedOnCell.js.map +1 -1
  518. package/dist/components/EntityFinder/details/view/table/DateCell.js.map +1 -1
  519. package/dist/components/EntityFinder/details/view/table/EntityBadgeIconsCell.js.map +1 -1
  520. package/dist/components/EntityFinder/details/view/table/EntityFinderCheckboxCell.js.map +1 -1
  521. package/dist/components/EntityFinder/details/view/table/EntityFinderVersionCell.js.map +1 -1
  522. package/dist/components/EntityFinder/details/view/table/EntityNameCell.js.map +1 -1
  523. package/dist/components/EntityFinder/details/view/table/EntityTypeCell.js.map +1 -1
  524. package/dist/components/EntityFinder/details/view/table/FileEntityDirectDownloadCell.js.map +1 -1
  525. package/dist/components/EntityFinder/details/view/table/FileEntityMD5Cell.js.map +1 -1
  526. package/dist/components/EntityFinder/details/view/table/FileEntitySizeCell.js.map +1 -1
  527. package/dist/components/EntityFinder/details/view/table/ModifiedByCell.js.map +1 -1
  528. package/dist/components/EntityFinder/details/view/table/ModifiedOnCell.js.map +1 -1
  529. package/dist/components/EntityFinder/details/view/table/ParentProjectCell.js.map +1 -1
  530. package/dist/components/EntityFinder/details/view/table/UserBadgeCell.js.map +1 -1
  531. package/dist/components/EntityFinder/tree/EntityTree.js +80 -80
  532. package/dist/components/EntityFinder/tree/EntityTree.js.map +1 -1
  533. package/dist/components/EntityFinder/tree/VirtualizedTree.js +31 -31
  534. package/dist/components/EntityFinder/tree/VirtualizedTree.js.map +1 -1
  535. package/dist/components/EntityFinder/useEntitySelection.js.map +1 -1
  536. package/dist/components/EntityForm/EntityForm.js.map +1 -1
  537. package/dist/components/EntityHeaderTable/DebouncedInput.js.map +1 -1
  538. package/dist/components/EntityHeaderTable/EntityHeaderTable.js.map +1 -1
  539. package/dist/components/EntityHeaderTable/EntityHeaderTableCellRenderers.js.map +1 -1
  540. package/dist/components/EntityHeaderTable/Filter.js.map +1 -1
  541. package/dist/components/EntityHeaderTable/useEntityHeaderTableState.js.map +1 -1
  542. package/dist/components/EntityIcon.js.map +1 -1
  543. package/dist/components/EntityLink.js.map +1 -1
  544. package/dist/components/EntitySubjectsSelector/EntitySubjectsSelector.js.map +1 -1
  545. package/dist/components/EntityTreeTable/EntityTreeTable.js.map +1 -1
  546. package/dist/components/EntityTreeTable/components/AutoLoadMore.js.map +1 -1
  547. package/dist/components/EntityTreeTable/components/ColumnHeaders.js.map +1 -1
  548. package/dist/components/EntityTreeTable/components/EntityBadgeIconsCell.js.map +1 -1
  549. package/dist/components/EntityTreeTable/components/EntityNameCell.js.map +1 -1
  550. package/dist/components/EntityTreeTable/components/EntityTreeTableContext.js.map +1 -1
  551. package/dist/components/EntityTreeTable/components/EntityTreeTableRow.js.map +1 -1
  552. package/dist/components/EntityTreeTable/components/EntityTreeTableView.js.map +1 -1
  553. package/dist/components/EntityTreeTable/components/IdCell.js.map +1 -1
  554. package/dist/components/EntityTreeTable/components/IdColumnHeader.js.map +1 -1
  555. package/dist/components/EntityTreeTable/hooks/useEntityTreeState.js.map +1 -1
  556. package/dist/components/EntityTreeTable/hooks/useTableColumns.js.map +1 -1
  557. package/dist/components/EntityTreeTable/hooks/useTableData.js.map +1 -1
  558. package/dist/components/EntityTreeTable/hooks/useTreeOperationsWithDirectFetch.js.map +1 -1
  559. package/dist/components/EntityUpload/EntityUpload.js.map +1 -1
  560. package/dist/components/EntityUpload/EntityUploadModal.js +29 -31
  561. package/dist/components/EntityUpload/EntityUploadModal.js.map +1 -1
  562. package/dist/components/EntityUpload/EntityUploadPromptDialog.js.map +1 -1
  563. package/dist/components/EntityUpload/ExternalObjectStoreCredentialsForm.js.map +1 -1
  564. package/dist/components/EntityUpload/FileUploadProgress.js.map +1 -1
  565. package/dist/components/EntityUpload/LinkToURL.js.map +1 -1
  566. package/dist/components/EntityUpload/ProjectStorageLimitAlert.js.map +1 -1
  567. package/dist/components/EntityViewScopeEditor/EntityViewMaskEditor.js.map +1 -1
  568. package/dist/components/EntityViewScopeEditor/EntityViewScopeEditor.js.map +1 -1
  569. package/dist/components/EntityViewScopeEditor/EntityViewScopeEditorModal.js.map +1 -1
  570. package/dist/components/Evaluation/CreatedOnByUserDiv.js.map +1 -1
  571. package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.js.map +1 -1
  572. package/dist/components/Evaluation/EvaluationCard.js.map +1 -1
  573. package/dist/components/Evaluation/EvaluationEditor.js.map +1 -1
  574. package/dist/components/Evaluation/EvaluationEditorPage.js.map +1 -1
  575. package/dist/components/Evaluation/EvaluationRoundEditor.js.map +1 -1
  576. package/dist/components/Evaluation/EvaluationRoundEditorDropdown.js.map +1 -1
  577. package/dist/components/Evaluation/EvaluationRoundEditorList.js.map +1 -1
  578. package/dist/components/Evaluation/input_models/models.js.map +1 -1
  579. package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptions.js.map +1 -1
  580. package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.js.map +1 -1
  581. package/dist/components/EvaluationFinder/EvaluationFinder.js.map +1 -1
  582. package/dist/components/ExperimentalMode/ExperimentalMode.d.ts.map +1 -1
  583. package/dist/components/ExperimentalMode/ExperimentalMode.js +24 -30
  584. package/dist/components/ExperimentalMode/ExperimentalMode.js.map +1 -1
  585. package/dist/components/ExternalFileHandleLink/ExternalFileHandleLink.js.map +1 -1
  586. package/dist/components/FeaturedDataTabs/FacetPlotsCard.js.map +1 -1
  587. package/dist/components/FeaturedDataTabs/FacetPlotsCardGrid.js.map +1 -1
  588. package/dist/components/FeaturedDataTabs/FeaturedDataPlots.js.map +1 -1
  589. package/dist/components/FeaturedDataTabs/FeaturedDataTabs.js.map +1 -1
  590. package/dist/components/FeaturedDataTabs/QueryPerFacetPlotsCard.js.map +1 -1
  591. package/dist/components/FeaturedDataTabs/SingleQueryFacetPlotsCards.js.map +1 -1
  592. package/dist/components/FeaturedResearch/FeaturedResearch.js +16 -18
  593. package/dist/components/FeaturedResearch/FeaturedResearch.js.map +1 -1
  594. package/dist/components/FeaturedToolsList/FeaturedToolCard.js.map +1 -1
  595. package/dist/components/FeaturedToolsList/FeaturedToolsList.js.map +1 -1
  596. package/dist/components/FilePreview/EntityPreview.js.map +1 -1
  597. package/dist/components/FilePreview/FileEntityPreview.js.map +1 -1
  598. package/dist/components/FilePreview/FileHandleContentRenderer.js.map +1 -1
  599. package/dist/components/FilePreview/HtmlPreview/HtmlPreview.js.map +1 -1
  600. package/dist/components/FilePreview/PdfPreview.js.map +1 -1
  601. package/dist/components/FilePreview/PreviewRendererType.js.map +1 -1
  602. package/dist/components/FilePreview/PreviewUtils.js.map +1 -1
  603. package/dist/components/FileUpload/FileUpload.js.map +1 -1
  604. package/dist/components/Forum/DiscussionReply.js.map +1 -1
  605. package/dist/components/Forum/DiscussionSearchResult.js.map +1 -1
  606. package/dist/components/Forum/DiscussionThread.js.map +1 -1
  607. package/dist/components/Forum/ForumPage.js.map +1 -1
  608. package/dist/components/Forum/ForumTable.js.map +1 -1
  609. package/dist/components/Forum/ForumThreadEditor.js.map +1 -1
  610. package/dist/components/Forum/SubscribersModal.js.map +1 -1
  611. package/dist/components/ForumSearch/ForumSearch.js.map +1 -1
  612. package/dist/components/FullTextSearch/FullTextSearch.js.map +1 -1
  613. package/dist/components/FullTextSearch/FullTextSearchUtils.js.map +1 -1
  614. package/dist/components/FullWidthAlert/FullWidthAlert.js.map +1 -1
  615. package/dist/components/GenericCard/BioregistryRules.js.map +1 -1
  616. package/dist/components/GenericCard/CardUtils.js.map +1 -1
  617. package/dist/components/GenericCard/CollapsibleDescription.js.map +1 -1
  618. package/dist/components/GenericCard/CroissantButton/CroissantButton.js.map +1 -1
  619. package/dist/components/GenericCard/GenericCard.js.map +1 -1
  620. package/dist/components/GenericCard/GenericCardActionButton.js.map +1 -1
  621. package/dist/components/GenericCard/GenericCardIcon.js.map +1 -1
  622. package/dist/components/GenericCard/GenericCardTitle.js.map +1 -1
  623. package/dist/components/GenericCard/LabelMaybeWithIcon.js.map +1 -1
  624. package/dist/components/GenericCard/Linkify.js.map +1 -1
  625. package/dist/components/GenericCard/PortalDOI/PortalDOI.js.map +1 -1
  626. package/dist/components/GenericCard/PortalDOI/PortalDOIUtils.js.map +1 -1
  627. package/dist/components/GenericCard/SynapseCardLabel.js +1 -1
  628. package/dist/components/GenericCard/SynapseCardLabel.js.map +1 -1
  629. package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
  630. package/dist/components/GenericCard/useResolvedSynapseEntity.js.map +1 -1
  631. package/dist/components/Goals/Goals.Desktop.js.map +1 -1
  632. package/dist/components/Goals/Goals.Mobile.js.map +1 -1
  633. package/dist/components/Goals/Goals.js +25 -27
  634. package/dist/components/Goals/Goals.js.map +1 -1
  635. package/dist/components/GoalsV2/GoalsV2.Desktop.js.map +1 -1
  636. package/dist/components/GoalsV2/GoalsV2.Mobile.js.map +1 -1
  637. package/dist/components/GoalsV2/GoalsV2.js +14 -16
  638. package/dist/components/GoalsV2/GoalsV2.js.map +1 -1
  639. package/dist/components/GoalsV3/GoalsV3.Desktop.js.map +1 -1
  640. package/dist/components/GoalsV3/GoalsV3.Mobile.js.map +1 -1
  641. package/dist/components/GoalsV3/GoalsV3.js +14 -16
  642. package/dist/components/GoalsV3/GoalsV3.js.map +1 -1
  643. package/dist/components/GoogleAnalytics/GoogleAnalytics.js.map +1 -1
  644. package/dist/components/GoogleMap/GoogleMap.js.map +1 -1
  645. package/dist/components/GoogleMap/SynapseUserMarker.js.map +1 -1
  646. package/dist/components/HasAccess/AccessIcon.js +10 -10
  647. package/dist/components/HasAccess/AccessIcon.js.map +1 -1
  648. package/dist/components/HasAccess/HasAccessV2.js.map +1 -1
  649. package/dist/components/HasAccess/useHasAccess.js.map +1 -1
  650. package/dist/components/HeaderCard/HeaderCardV2.js.map +1 -1
  651. package/dist/components/HeaderCard.js.map +1 -1
  652. package/dist/components/HelpPopover/HelpPopover.js.map +1 -1
  653. package/dist/components/HexGrid/HexGrid.js.map +1 -1
  654. package/dist/components/IDUReport/IDUReport.js.map +1 -1
  655. package/dist/components/IDUReport/IDUReportSubmissionInfo.js.map +1 -1
  656. package/dist/components/Icon/Icon.js.map +1 -1
  657. package/dist/components/IconList.js.map +1 -1
  658. package/dist/components/IconSvg/IconSvg.js.map +1 -1
  659. package/dist/components/IconSvgButton.js.map +1 -1
  660. package/dist/components/ImageCardGridWithLinks/ImageCardGridWithLinks.js +7 -9
  661. package/dist/components/ImageCardGridWithLinks/ImageCardGridWithLinks.js.map +1 -1
  662. package/dist/components/ImageFromSynapseTable.js.map +1 -1
  663. package/dist/components/InteractiveCopyIdsIcon.js.map +1 -1
  664. package/dist/components/JSONArrayEditor/JSONArrayEditor.js.map +1 -1
  665. package/dist/components/JSONArrayEditor/JSONArrayEditorModal.js.map +1 -1
  666. package/dist/components/JSONArrayEditor/useParseCsv.js.map +1 -1
  667. package/dist/components/JsonLdScript.js.map +1 -1
  668. package/dist/components/JsonSchemaForm/JsonSchemaForm.js.map +1 -1
  669. package/dist/components/JsonSchemaForm/templates/ArrayFieldDescriptionTemplate.js.map +1 -1
  670. package/dist/components/JsonSchemaForm/templates/ArrayFieldItemButtonTemplate.js.map +1 -1
  671. package/dist/components/JsonSchemaForm/templates/ArrayFieldItemTemplate.js.map +1 -1
  672. package/dist/components/JsonSchemaForm/templates/ArrayFieldTemplate.js.map +1 -1
  673. package/dist/components/JsonSchemaForm/templates/ArrayFieldTitleTemplate.js.map +1 -1
  674. package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.js.map +1 -1
  675. package/dist/components/JsonSchemaForm/templates/ButtonTemplate.js.map +1 -1
  676. package/dist/components/JsonSchemaForm/templates/DescriptionFieldTemplate.js.map +1 -1
  677. package/dist/components/JsonSchemaForm/templates/ErrorListTemplate.js.map +1 -1
  678. package/dist/components/JsonSchemaForm/templates/FieldDescriptionTable.js.map +1 -1
  679. package/dist/components/JsonSchemaForm/templates/FieldErrorTemplate.js.map +1 -1
  680. package/dist/components/JsonSchemaForm/templates/FieldTemplate.js.map +1 -1
  681. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js.map +1 -1
  682. package/dist/components/JsonSchemaForm/widgets/BooleanWidget.js.map +1 -1
  683. package/dist/components/JsonSchemaForm/widgets/DateTimeWidget.js.map +1 -1
  684. package/dist/components/JsonSchemaForm/widgets/SelectWidget.js.map +1 -1
  685. package/dist/components/LoadingScreen/LoadingScreen.js.map +1 -1
  686. package/dist/components/MailchimpSubscribeSection/MailchimpSubscribeSection.js.map +1 -1
  687. package/dist/components/Markdown/GovernanceMarkdownGithub.js.map +1 -1
  688. package/dist/components/Markdown/MarkdownCollapse.js.map +1 -1
  689. package/dist/components/Markdown/MarkdownEditor.js.map +1 -1
  690. package/dist/components/Markdown/MarkdownGithub.js.map +1 -1
  691. package/dist/components/Markdown/MarkdownPopover.js.map +1 -1
  692. package/dist/components/Markdown/MarkdownSynapse.d.ts.map +1 -1
  693. package/dist/components/Markdown/MarkdownSynapse.js +75 -106
  694. package/dist/components/Markdown/MarkdownSynapse.js.map +1 -1
  695. package/dist/components/Markdown/MarkdownUtils.d.ts +14 -4
  696. package/dist/components/Markdown/MarkdownUtils.d.ts.map +1 -1
  697. package/dist/components/Markdown/MarkdownUtils.js +38 -37
  698. package/dist/components/Markdown/MarkdownUtils.js.map +1 -1
  699. package/dist/components/Markdown/MarkdownWidget.js.map +1 -1
  700. package/dist/components/Markdown/SynapseWikiContext.js.map +1 -1
  701. package/dist/components/Markdown/UserMentionModal.js.map +1 -1
  702. package/dist/components/Markdown/widget/Bookmarks.js.map +1 -1
  703. package/dist/components/Markdown/widget/MarkdownButton.js.map +1 -1
  704. package/dist/components/Markdown/widget/MarkdownEntityPreview.js.map +1 -1
  705. package/dist/components/Markdown/widget/MarkdownIDUReport.js.map +1 -1
  706. package/dist/components/Markdown/widget/MarkdownProvenanceGraph.js.map +1 -1
  707. package/dist/components/Markdown/widget/MarkdownSynapseImage.js.map +1 -1
  708. package/dist/components/Markdown/widget/MarkdownSynapsePlot.js.map +1 -1
  709. package/dist/components/Markdown/widget/MarkdownSynapseTable.js.map +1 -1
  710. package/dist/components/Markdown/widget/MarkdownTableOfContents.js.map +1 -1
  711. package/dist/components/Markdown/widget/MarkdownUserOrTeamBadge.js.map +1 -1
  712. package/dist/components/Markdown/widget/MarkdownVideo.js.map +1 -1
  713. package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js.map +1 -1
  714. package/dist/components/ModalDownload/ModalDownload.FormSchema.js.map +1 -1
  715. package/dist/components/ModalDownload/ModalDownload.js.map +1 -1
  716. package/dist/components/MuiContainer.js.map +1 -1
  717. package/dist/components/OAuthClientAclEditor/OAuthAclEditorModal.js.map +1 -1
  718. package/dist/components/OAuthClientAclEditor/OAuthClientAclEditor.js.map +1 -1
  719. package/dist/components/OAuthClientManagement/CreateOAuthClient.js.map +1 -1
  720. package/dist/components/OAuthClientManagement/OAuthManagement.js.map +1 -1
  721. package/dist/components/OrientationBanner/OrientationBanner.js.map +1 -1
  722. package/dist/components/PageProgress/PageProgress.js.map +1 -1
  723. package/dist/components/Plot/BarPlot.js.map +1 -1
  724. package/dist/components/Plot/DotPlot.js.map +1 -1
  725. package/dist/components/Plot/Plot.d.ts +12 -1
  726. package/dist/components/Plot/Plot.d.ts.map +1 -1
  727. package/dist/components/Plot/Plot.js +5 -1
  728. package/dist/components/Plot/Plot.js.map +1 -1
  729. package/dist/components/Plot/PlotPanelHeader.js.map +1 -1
  730. package/dist/components/Plot/SynapsePlot.js.map +1 -1
  731. package/dist/components/Plot/SynapseSankeyPlot.d.ts +12 -0
  732. package/dist/components/Plot/SynapseSankeyPlot.d.ts.map +1 -0
  733. package/dist/components/Plot/SynapseSankeyPlot.js +54 -0
  734. package/dist/components/Plot/SynapseSankeyPlot.js.map +1 -0
  735. package/dist/components/Plot/ThemesPlot.js.map +1 -1
  736. package/dist/components/Plot/UpsetPlot.js.map +1 -1
  737. package/dist/components/Plot/index.d.ts +3 -1
  738. package/dist/components/Plot/index.d.ts.map +1 -1
  739. package/dist/components/Plot/index.js +2 -1
  740. package/dist/components/Plot/safe-react-plotly-factory.js.map +1 -1
  741. package/dist/components/PortalAclEditor/PortalAclEditor.js.map +1 -1
  742. package/dist/components/PortalAclEditor/PortalAclEditorModal.js.map +1 -1
  743. package/dist/components/PortalFeatureHighlights/PortalFeatureHighlights.js.map +1 -1
  744. package/dist/components/PortalFeaturedPartners/PortalFeaturedPartners.js +4 -6
  745. package/dist/components/PortalFeaturedPartners/PortalFeaturedPartners.js.map +1 -1
  746. package/dist/components/PortalHomePageHeader/PortalHomePageHeader.js.map +1 -1
  747. package/dist/components/PortalList/CreatePortalModal.js.map +1 -1
  748. package/dist/components/PortalList/PortalCard.js.map +1 -1
  749. package/dist/components/PortalList/PortalList.js.map +1 -1
  750. package/dist/components/PortalSectionHeader/PortalSectionHeader.js.map +1 -1
  751. package/dist/components/ProgrammaticInstructionsModal/ProgrammaticInstructionsModal.js +69 -69
  752. package/dist/components/ProgrammaticInstructionsModal/ProgrammaticInstructionsModal.js.map +1 -1
  753. package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js.map +1 -1
  754. package/dist/components/Programs/Programs.Desktop.js.map +1 -1
  755. package/dist/components/Programs/Programs.Mobile.js.map +1 -1
  756. package/dist/components/Programs/Programs.js.map +1 -1
  757. package/dist/components/ProjectStorage/ProjectDataAvailability.js.map +1 -1
  758. package/dist/components/ProvenanceGraph/ActivityNodeLabel.js.map +1 -1
  759. package/dist/components/ProvenanceGraph/EntityNodeLabel.js.map +1 -1
  760. package/dist/components/ProvenanceGraph/EntityPlaceholderNodeLabel.js.map +1 -1
  761. package/dist/components/ProvenanceGraph/ExpandGraphNodeLabel.js.map +1 -1
  762. package/dist/components/ProvenanceGraph/ExternalGraphNodeLabel.js.map +1 -1
  763. package/dist/components/ProvenanceGraph/ProvenanceEntityIcon.js.map +1 -1
  764. package/dist/components/ProvenanceGraph/ProvenanceExternalIcon.js.map +1 -1
  765. package/dist/components/ProvenanceGraph/ProvenanceGraph.js.map +1 -1
  766. package/dist/components/ProvenanceGraph/ProvenanceGraphUtils.js.map +1 -1
  767. package/dist/components/ProvenanceGraph/ProvenanceUtils.js +13 -13
  768. package/dist/components/ProvenanceGraph/ProvenanceUtils.js.map +1 -1
  769. package/dist/components/ProvenanceGraph/UndefinedNodeLabel.js.map +1 -1
  770. package/dist/components/QueryContext/QueryContext.js.map +1 -1
  771. package/dist/components/QueryCount/QueryCount.js.map +1 -1
  772. package/dist/components/QueryCountButton/QueryCountButton.js.map +1 -1
  773. package/dist/components/QuerySortSelector.js.map +1 -1
  774. package/dist/components/QueryVisualizationWrapper/NoContentPlaceholder.js.map +1 -1
  775. package/dist/components/QueryVisualizationWrapper/QueryVisualizationContext.js.map +1 -1
  776. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.d.ts.map +1 -1
  777. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js +67 -65
  778. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js.map +1 -1
  779. package/dist/components/QueryWrapper/QueryWrapper.js +27 -27
  780. package/dist/components/QueryWrapper/QueryWrapper.js.map +1 -1
  781. package/dist/components/QueryWrapper/QueryWrapperLoadingScreen.js.map +1 -1
  782. package/dist/components/QueryWrapper/TableQueryUseQueryOptions.js.map +1 -1
  783. package/dist/components/QueryWrapper/TableRowSelectionState.js.map +1 -1
  784. package/dist/components/QueryWrapper/ViewMoreQueryResultsButton.js.map +1 -1
  785. package/dist/components/QueryWrapper/generateEncodedPathAndQueryForSelectedFacetURL.js.map +1 -1
  786. package/dist/components/QueryWrapper/useComputeRowSelectionPrimaryKey.js.map +1 -1
  787. package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.js.map +1 -1
  788. package/dist/components/QueryWrapper/useGetQueryMetadata.js.map +1 -1
  789. package/dist/components/QueryWrapper/useHasFacetedSelectColumn.js.map +1 -1
  790. package/dist/components/QueryWrapper/useOnQueryDataChange.js.map +1 -1
  791. package/dist/components/QueryWrapperErrorBoundary.js.map +1 -1
  792. package/dist/components/QueryWrapperPlotNav/LastUpdatedOn.js.map +1 -1
  793. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts +1 -1
  794. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
  795. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +1 -0
  796. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
  797. package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.js.map +1 -1
  798. package/dist/components/QueryWrapperPlotNav/RowSetView.js.map +1 -1
  799. package/dist/components/QueryWrapperPlotNav/UseRowSet.js.map +1 -1
  800. package/dist/components/RORInstitutionField/RORInstitutionField.js.map +1 -1
  801. package/dist/components/RecentPublicationsGrid/RecentPublicationsGrid.js +6 -8
  802. package/dist/components/RecentPublicationsGrid/RecentPublicationsGrid.js.map +1 -1
  803. package/dist/components/RegisterPageLogoutPrompt/RegisterPageLogoutPrompt.js.map +1 -1
  804. package/dist/components/ReleaseCard/ReleaseCard.js.map +1 -1
  805. package/dist/components/ReleaseCard/ReleaseCardLarge.js.map +1 -1
  806. package/dist/components/ReleaseCard/ReleaseCardMedium.js.map +1 -1
  807. package/dist/components/ReleaseCard/ReleaseCardUtils.js.map +1 -1
  808. package/dist/components/RenderIfInView/RenderIfInView.js.map +1 -1
  809. package/dist/components/ResizableContainer/ResizableContainer.js.map +1 -1
  810. package/dist/components/ResizableContainer/hooks/useResizable.js.map +1 -1
  811. package/dist/components/Resources/Resources.Desktop.js.map +1 -1
  812. package/dist/components/Resources/Resources.Mobile.js.map +1 -1
  813. package/dist/components/Resources/Resources.js +8 -11
  814. package/dist/components/Resources/Resources.js.map +1 -1
  815. package/dist/components/RowDataTable/RowDataTable.js.map +1 -1
  816. package/dist/components/RowDataTable/RowDataTableWithQuery.js.map +1 -1
  817. package/dist/components/RssFeedCards/RssFeedCards.js.map +1 -1
  818. package/dist/components/SageResourcesPopover/SageResourcesPopover.js.map +1 -1
  819. package/dist/components/SchemaDrivenAnnotationEditor/AnnotationEditorUtils.js.map +1 -1
  820. package/dist/components/SchemaDrivenAnnotationEditor/SchemaDrivenAnnotationEditor.js.map +1 -1
  821. package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.js.map +1 -1
  822. package/dist/components/SchemaDrivenAnnotationEditor/field/SynapseAnnotationsRJSFObjectField.js.map +1 -1
  823. package/dist/components/SchemaDrivenAnnotationEditor/template/AdditionalPropertyContext.js.map +1 -1
  824. package/dist/components/SchemaDrivenAnnotationEditor/template/ObjectFieldTemplate.js.map +1 -1
  825. package/dist/components/SchemaDrivenAnnotationEditor/template/SynapseAnnotationsWrapIfAdditionalTemplate.js.map +1 -1
  826. package/dist/components/SchemaDrivenAnnotationEditor/widget/TextWidget.js.map +1 -1
  827. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
  828. package/dist/components/SearchQueryWrapper/SearchQueryWrapper.js.map +1 -1
  829. package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.d.ts +1 -1
  830. package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.d.ts.map +1 -1
  831. package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.js +1 -0
  832. package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.js.map +1 -1
  833. package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js.map +1 -1
  834. package/dist/components/SetBasicAccessRequirementFields/AccessRequirementTextInstructions.js.map +1 -1
  835. package/dist/components/SetBasicAccessRequirementFields/AccessRequirementWikiInstructions.js.map +1 -1
  836. package/dist/components/SetBasicAccessRequirementFields/AccessorRequirements.js.map +1 -1
  837. package/dist/components/SetBasicAccessRequirementFields/GovernanceUtils.js.map +1 -1
  838. package/dist/components/SetBasicAccessRequirementFields/SetBasicAccessRequirementFields.js.map +1 -1
  839. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js.map +1 -1
  840. package/dist/components/ShareThisPage/ShareThisPage.js.map +1 -1
  841. package/dist/components/ShowMore/ShowMore.js.map +1 -1
  842. package/dist/components/SignInButton.js.map +1 -1
  843. package/dist/components/SignInRequiredModal/SignInRequiredModal.js.map +1 -1
  844. package/dist/components/Skeleton/SkeletonButton.js.map +1 -1
  845. package/dist/components/Skeleton/SkeletonInlineBlock.js.map +1 -1
  846. package/dist/components/Skeleton/SkeletonParagraph.js.map +1 -1
  847. package/dist/components/Skeleton/SkeletonTable.js.map +1 -1
  848. package/dist/components/SmartLink/SmartButton.js.map +1 -1
  849. package/dist/components/SmartLink/SmartLink.js.map +1 -1
  850. package/dist/components/SmartLink/useSmartLink.js.map +1 -1
  851. package/dist/components/SourceAppImage.js.map +1 -1
  852. package/dist/components/SpinnerButton/SpinnerButton.js.map +1 -1
  853. package/dist/components/SqlDefinedTableEditor/SqlDefinedTableEditor.js.map +1 -1
  854. package/dist/components/SqlDefinedTableEditor/SqlDefinedTableEditorModal.js.map +1 -1
  855. package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.d.ts +1 -1
  856. package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.d.ts.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.js.map +1 -1
  972. package/dist/components/SynapseTable/TopLevelControls/TopLevelControlsUtils.js.map +1 -1
  973. package/dist/components/SynapseTable/datasets/DatasetEditorCheckboxCell.js.map +1 -1
  974. package/dist/components/SynapseTable/datasets/DatasetEditorUtils.js.map +1 -1
  975. package/dist/components/SynapseTable/datasets/DatasetEditorVersionCell.js.map +1 -1
  976. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +131 -133
  977. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js.map +1 -1
  978. package/dist/components/SynapseTable/datasets/EntityFetchErrorCell.js.map +1 -1
  979. package/dist/components/SynapseTable/export/ADDiscoveryPortalInstructions.js.map +1 -1
  980. package/dist/components/SynapseTable/export/ExportToAnalysisPlatformDialog.js +48 -51
  981. package/dist/components/SynapseTable/export/ExportToAnalysisPlatformDialog.js.map +1 -1
  982. package/dist/components/SynapseTable/export/ExternalAnalysisPlatformInstructions.js.map +1 -1
  983. package/dist/components/SynapseTable/export/ExternalAnalysisPlatformsConstants.js.map +1 -1
  984. package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.js.map +1 -1
  985. package/dist/components/SynapseTable/export/ExternalPlatformDisclaimer.js.map +1 -1
  986. package/dist/components/SynapseTable/table-top/ColumnSelection.js.map +1 -1
  987. package/dist/components/SynapseTable/table-top/DownloadLoginModal.js.map +1 -1
  988. package/dist/components/SynapseTable/table-top/DownloadOptions.js.map +1 -1
  989. package/dist/components/SynapseTable/usePrefetchTableData.js.map +1 -1
  990. package/dist/components/SynapseTable/useTableSort.js.map +1 -1
  991. package/dist/components/SystemUseNotification/SystemUseNotification.js.map +1 -1
  992. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +12 -12
  993. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js.map +1 -1
  994. package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/DefaultValueField.js.map +1 -1
  995. package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/FieldWithRecommendedMinimum.js.map +1 -1
  996. package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/MultiValueField.js +4 -4
  997. package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/MultiValueField.js.map +1 -1
  998. package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js.map +1 -1
  999. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditor.js.map +1 -1
  1000. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorTestUtils.js.map +1 -1
  1001. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js.map +1 -1
  1002. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +32 -32
  1003. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
  1004. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.js.map +1 -1
  1005. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormReducer.js.map +1 -1
  1006. package/dist/components/TableColumnSchemaEditor/Validators/BooleanSchema.js.map +1 -1
  1007. package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.js.map +1 -1
  1008. package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.js.map +1 -1
  1009. package/dist/components/TableColumnSchemaEditor/Validators/DefaultValueValidator.js.map +1 -1
  1010. package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.js.map +1 -1
  1011. package/dist/components/TableColumnSchemaEditor/Validators/EntityIdSchema.js.map +1 -1
  1012. package/dist/components/TableColumnSchemaEditor/Validators/EnumValuesValidator.js.map +1 -1
  1013. package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.js.map +1 -1
  1014. package/dist/components/TableColumnSchemaEditor/Validators/OptionalStringSchema.js.map +1 -1
  1015. package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.js.map +1 -1
  1016. package/dist/components/TableFeedCards/TableFeedCards.js.map +1 -1
  1017. package/dist/components/TanStackTable/ColumnHeader.js.map +1 -1
  1018. package/dist/components/TanStackTable/ColumnHeaderEnumFilter.js.map +1 -1
  1019. package/dist/components/TanStackTable/StyledTanStackTable.js.map +1 -1
  1020. package/dist/components/TanStackTable/StyledVirtualTanStackTable.js.map +1 -1
  1021. package/dist/components/TanStackTable/TableBody.js.map +1 -1
  1022. package/dist/components/TanStackTable/TableCellRenderer.js.map +1 -1
  1023. package/dist/components/TanStackTable/TanStackTableUtils.js.map +1 -1
  1024. package/dist/components/TeamBadge.js.map +1 -1
  1025. package/dist/components/TeamSubjectsSelector/TeamBadgeOrError.js.map +1 -1
  1026. package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.js.map +1 -1
  1027. package/dist/components/TemplateComponent.js.map +1 -1
  1028. package/dist/components/TemporaryBanner/TemporaryBanner.js.map +1 -1
  1029. package/dist/components/TermsAndConditions/TermsAndConditions.js.map +1 -1
  1030. package/dist/components/TermsAndConditions/TermsAndConditionsItem.js.map +1 -1
  1031. package/dist/components/TextField/TextField.js.map +1 -1
  1032. package/dist/components/TextField/TextFieldWithWordLimit.js.map +1 -1
  1033. package/dist/components/TextToComponentCollapse.js.map +1 -1
  1034. package/dist/components/ThemeGallery/ThemeGallery.js.map +1 -1
  1035. package/dist/components/TimelinePlot/TimelineLegendItem.js.map +1 -1
  1036. package/dist/components/TimelinePlot/TimelinePhase.js.map +1 -1
  1037. package/dist/components/TimelinePlot/TimelinePlot.js.map +1 -1
  1038. package/dist/components/TimelinePlot/TimelinePlotSpeciesSelector.js.map +1 -1
  1039. package/dist/components/TimelinePlot/phasesQueryResponseData.js.map +1 -1
  1040. package/dist/components/ToastMessage/ToastMessage.js.map +1 -1
  1041. package/dist/components/TotalQueryResults.js.map +1 -1
  1042. package/dist/components/UserCard/Avatar.js.map +1 -1
  1043. package/dist/components/UserCard/UserBadge.js.map +1 -1
  1044. package/dist/components/UserCard/UserCard.js.map +1 -1
  1045. package/dist/components/UserCard/UserCardContextMenu.js.map +1 -1
  1046. package/dist/components/UserCard/UserCardLarge.js.map +1 -1
  1047. package/dist/components/UserCard/UserCardMedium.js.map +1 -1
  1048. package/dist/components/UserCardList/UserCardList.js.map +1 -1
  1049. package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.Desktop.js.map +1 -1
  1050. package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.Mobile.js.map +1 -1
  1051. package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.js.map +1 -1
  1052. package/dist/components/UserCardList/UserCardListRotate.js.map +1 -1
  1053. package/dist/components/UserOrTeamBadge/UserOrTeamBadge.js.map +1 -1
  1054. package/dist/components/UserOrTeamBadge/useUserOrTeam.js.map +1 -1
  1055. package/dist/components/UserProfileLinks/UserChallenges.js.map +1 -1
  1056. package/dist/components/UserProfileLinks/UserProfileLinks.js.map +1 -1
  1057. package/dist/components/UserProfileLinks/UserProjects.js.map +1 -1
  1058. package/dist/components/UserProfileLinks/UserTeams.js.map +1 -1
  1059. package/dist/components/UserSearchBox/UserSearchBox.js.map +1 -1
  1060. package/dist/components/Webhook/CreateWebhookModal.js.map +1 -1
  1061. package/dist/components/Webhook/WebhookDashboard.js.map +1 -1
  1062. package/dist/components/Webhook/WebhookVerificationDialog.js.map +1 -1
  1063. package/dist/components/WikiMarkdownEditor/WikiMarkdownEditor.js.map +1 -1
  1064. package/dist/components/WikiMarkdownEditorButton/WikiMarkdownEditorButton.js.map +1 -1
  1065. package/dist/components/WizardChoiceButton/WizardChoiceButton.js.map +1 -1
  1066. package/dist/components/WizardChoiceButton/WizardChoiceButtonDescription.js.map +1 -1
  1067. package/dist/components/WizardChoiceButton/WizardChoiceButtonGroup.js.map +1 -1
  1068. package/dist/components/WordPress/WordPressLatestPostChip.js.map +1 -1
  1069. package/dist/components/WordPress/useWordPressCategories.js.map +1 -1
  1070. package/dist/components/WordPress/useWordPressPosts.js.map +1 -1
  1071. package/dist/components/dataaccess/AccessApprovalsTable.js.map +1 -1
  1072. package/dist/components/dataaccess/AccessHistoryDashboard.js.map +1 -1
  1073. package/dist/components/dataaccess/AccessRequestSubmissionTable.js.map +1 -1
  1074. package/dist/components/dataaccess/AccessRequirementDashboard.js.map +1 -1
  1075. package/dist/components/dataaccess/AccessRequirementSearchBox/AccessRequirementSearchBox.js.map +1 -1
  1076. package/dist/components/dataaccess/AccessRequirementTable.js.map +1 -1
  1077. package/dist/components/dataaccess/AccessSubmissionDashboard.js.map +1 -1
  1078. package/dist/components/dataaccess/RejectDataAccessRequestModal.js.map +1 -1
  1079. package/dist/components/dataaccess/RejectProfileValidationRequestModal.js.map +1 -1
  1080. package/dist/components/dataaccess/ReviewerDashboard.js.map +1 -1
  1081. package/dist/components/dataaccess/SubmissionPage/ApproveSubmissionConfirmationModal.js.map +1 -1
  1082. package/dist/components/dataaccess/SubmissionPage/CancelDataAccessRequestConfirmationModal.js.map +1 -1
  1083. package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js.map +1 -1
  1084. package/dist/components/dataaccess/UseAccessRequirementTable.js.map +1 -1
  1085. package/dist/components/dataaccess/UserAccessRequestHistory/SubmissionSortStateTranslator.js.map +1 -1
  1086. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.js.map +1 -1
  1087. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.js.map +1 -1
  1088. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryTable.js.map +1 -1
  1089. package/dist/components/doi/CreateOrUpdateDoiModal.js.map +1 -1
  1090. package/dist/components/doi/DoiFormSchemas.js.map +1 -1
  1091. package/dist/components/doi/PrivateEntityDoiWarning.js.map +1 -1
  1092. package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js.map +1 -1
  1093. package/dist/components/download_list/DownloadConfirmationUI.js +30 -32
  1094. package/dist/components/download_list/DownloadConfirmationUI.js.map +1 -1
  1095. package/dist/components/download_list/DownloadConfirmationUtils.js.map +1 -1
  1096. package/dist/components/download_list/DownloadDetails.js.map +1 -1
  1097. package/dist/components/download_list/index.js.map +1 -1
  1098. package/dist/components/entity/metadata/AnnotationsTable.js.map +1 -1
  1099. package/dist/components/entity/metadata/EntityAnnotationKey.js.map +1 -1
  1100. package/dist/components/entity/metadata/EntityModal.js.map +1 -1
  1101. package/dist/components/entity/metadata/MetadataTable.js.map +1 -1
  1102. package/dist/components/entity/page/CreatedByModifiedBy.js.map +1 -1
  1103. package/dist/components/entity/page/action_menu/EntityActionMenu.js.map +1 -1
  1104. package/dist/components/entity/page/breadcrumbs/EntityPageBreadcrumbs.js.map +1 -1
  1105. package/dist/components/entity/page/title_bar/CitationsDialog.js.map +1 -1
  1106. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js.map +1 -1
  1107. package/dist/components/entity/page/title_bar/EntityTitleBarVersionInfo.js.map +1 -1
  1108. package/dist/components/entity/page/title_bar/TitleBarProperties.js.map +1 -1
  1109. package/dist/components/entity/page/title_bar/useDataCiteUsage.js.map +1 -1
  1110. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
  1111. package/dist/components/entity/page/title_bar/useGetMentions.js.map +1 -1
  1112. package/dist/components/error/ErrorBanner.js.map +1 -1
  1113. package/dist/components/error/ErrorChip.js.map +1 -1
  1114. package/dist/components/error/ErrorPage.js +24 -24
  1115. package/dist/components/error/ErrorPage.js.map +1 -1
  1116. package/dist/components/error/RouteErrorBoundary.js.map +1 -1
  1117. package/dist/components/error/SendMessageToEntityOwnerDialog.js.map +1 -1
  1118. package/dist/components/error/SynapseObjectDOIInfo.js.map +1 -1
  1119. package/dist/components/favorites/FavoriteButton.js.map +1 -1
  1120. package/dist/components/favorites/FavoritesPage.js.map +1 -1
  1121. package/dist/components/file/upload/BasicFileHandleUpload.js.map +1 -1
  1122. package/dist/components/file/upload/MultiFileUploadProgress.js.map +1 -1
  1123. package/dist/components/file/upload/UploadFilePanel.js.map +1 -1
  1124. package/dist/components/form/RadioGroupWithOtherString.js.map +1 -1
  1125. package/dist/components/home_page/ExpandableContent.js.map +1 -1
  1126. package/dist/components/index.js +48 -47
  1127. package/dist/components/layout/InfiniteTableLayout.js.map +1 -1
  1128. package/dist/components/layout/SWCHeader.js.map +1 -1
  1129. package/dist/components/layout/SWCPageLayout.js.map +1 -1
  1130. package/dist/components/menu/ComplexMenu.js.map +1 -1
  1131. package/dist/components/menu/DropdownMenu.js.map +1 -1
  1132. package/dist/components/row_renderers/Dataset.js.map +1 -1
  1133. package/dist/components/row_renderers/Funder.js.map +1 -1
  1134. package/dist/components/row_renderers/ObservationCard.js.map +1 -1
  1135. package/dist/components/row_renderers/utils/CardFooter.js.map +1 -1
  1136. package/dist/components/row_renderers/utils/ChipContainer.js.map +1 -1
  1137. package/dist/components/styled/HoverPopover.js.map +1 -1
  1138. package/dist/components/styled/InlineBadge.js.map +1 -1
  1139. package/dist/components/styled/InputSizedButton.js.map +1 -1
  1140. package/dist/components/styled/LargeButton.js.map +1 -1
  1141. package/dist/components/styled/LeftRightPanel.js.map +1 -1
  1142. package/dist/components/styled/LightTooltip.js.map +1 -1
  1143. package/dist/components/styled/StyledFormControl.js.map +1 -1
  1144. package/dist/components/styled/StyledPopover.js.map +1 -1
  1145. package/dist/components/styled/StyledTableContainer.js.map +1 -1
  1146. package/dist/components/styled/WideButton.js.map +1 -1
  1147. package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.d.ts +18 -0
  1148. package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.d.ts.map +1 -0
  1149. package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js +113 -0
  1150. package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js.map +1 -0
  1151. package/dist/components/table/CsvPreview/CsvPreview.js.map +1 -1
  1152. package/dist/components/table/CsvPreview/CsvPreviewDialog.d.ts +5 -5
  1153. package/dist/components/table/CsvPreview/CsvPreviewDialog.d.ts.map +1 -1
  1154. package/dist/components/table/CsvPreview/CsvPreviewDialog.js +27 -76
  1155. package/dist/components/table/CsvPreview/CsvPreviewDialog.js.map +1 -1
  1156. package/dist/components/table/CsvPreview/CsvPreviewWithOptions.d.ts +19 -0
  1157. package/dist/components/table/CsvPreview/CsvPreviewWithOptions.d.ts.map +1 -0
  1158. package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js +41 -0
  1159. package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js.map +1 -0
  1160. package/dist/components/table/CsvPreview/CsvUploadPreviewContent.d.ts +12 -0
  1161. package/dist/components/table/CsvPreview/CsvUploadPreviewContent.d.ts.map +1 -0
  1162. package/dist/components/table/CsvPreview/CsvUploadPreviewContent.js +25 -0
  1163. package/dist/components/table/CsvPreview/CsvUploadPreviewContent.js.map +1 -0
  1164. package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.d.ts +18 -0
  1165. package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.d.ts.map +1 -0
  1166. package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.js +55 -0
  1167. package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.js.map +1 -0
  1168. package/dist/components/table/CsvPreview/useCreateTableFromCsv.d.ts +19 -0
  1169. package/dist/components/table/CsvPreview/useCreateTableFromCsv.d.ts.map +1 -0
  1170. package/dist/components/table/CsvPreview/useCreateTableFromCsv.js +35 -0
  1171. package/dist/components/table/CsvPreview/useCreateTableFromCsv.js.map +1 -0
  1172. package/dist/components/table/CsvPreview/useCsvUploadPreview.d.ts +22 -0
  1173. package/dist/components/table/CsvPreview/useCsvUploadPreview.d.ts.map +1 -0
  1174. package/dist/components/table/CsvPreview/useCsvUploadPreview.js +32 -0
  1175. package/dist/components/table/CsvPreview/useCsvUploadPreview.js.map +1 -0
  1176. package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.d.ts +14 -0
  1177. package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.d.ts.map +1 -0
  1178. package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.js +23 -0
  1179. package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.js.map +1 -0
  1180. package/dist/components/table/CsvTableDescriptorForm/CsvTableDescriptorForm.js.map +1 -1
  1181. package/dist/components/trash/TrashCanList.js.map +1 -1
  1182. package/dist/components/utils/Blocker.js.map +1 -1
  1183. package/dist/components/utils/ConditionalWrapper.js.map +1 -1
  1184. package/dist/components/utils/VisibilityObserver.js.map +1 -1
  1185. package/dist/components/widgets/ElementWithTooltip.js.map +1 -1
  1186. package/dist/components/widgets/EntityColumnImage.js.map +1 -1
  1187. package/dist/components/widgets/FileHandleLink.js.map +1 -1
  1188. package/dist/components/widgets/ImageFileHandle.js.map +1 -1
  1189. package/dist/components/widgets/LoginAwareButton.js.map +1 -1
  1190. package/dist/components/widgets/Range.js.map +1 -1
  1191. package/dist/components/widgets/RangeSlider/RangeSlider.js.map +1 -1
  1192. package/dist/components/widgets/SynapseImage.js.map +1 -1
  1193. package/dist/components/widgets/SynapseVideo.js.map +1 -1
  1194. package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
  1195. package/dist/components/widgets/facet-nav/FacetPlotLegendList.js.map +1 -1
  1196. package/dist/components/widgets/facet-nav/FacetPlotLegendTable.js.map +1 -1
  1197. package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.js.map +1 -1
  1198. package/dist/components/widgets/facet-nav/PlotsContainer.js.map +1 -1
  1199. package/dist/components/widgets/facet-nav/PlotsContainerSkeleton.js.map +1 -1
  1200. package/dist/components/widgets/facet-nav/SelectionCriteriaPill.js.map +1 -1
  1201. package/dist/components/widgets/facet-nav/SelectionCriteriaPills.js.map +1 -1
  1202. package/dist/components/widgets/facet-nav/useFacetPlots.js.map +1 -1
  1203. package/dist/components/widgets/query-filter/CombinedRangeFacetFilter.js.map +1 -1
  1204. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js.map +1 -1
  1205. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterDropdown.js.map +1 -1
  1206. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.js.map +1 -1
  1207. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterSkeleton.js.map +1 -1
  1208. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.js.map +1 -1
  1209. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.js.map +1 -1
  1210. package/dist/components/widgets/query-filter/FacetChip.js.map +1 -1
  1211. package/dist/components/widgets/query-filter/FacetFilterControls.js.map +1 -1
  1212. package/dist/components/widgets/query-filter/FacetFilterHeader.js.map +1 -1
  1213. package/dist/components/widgets/query-filter/FacetFilterSkeleton.js.map +1 -1
  1214. package/dist/components/widgets/query-filter/FacetFilterUtils.js.map +1 -1
  1215. package/dist/components/widgets/query-filter/JsonColumnFacetFilters.js.map +1 -1
  1216. package/dist/components/widgets/query-filter/RangeFacetFilter.js +3 -3
  1217. package/dist/components/widgets/query-filter/RangeFacetFilter.js.map +1 -1
  1218. package/dist/components/widgets/query-filter/RangeFacetFilterUI.js +41 -41
  1219. package/dist/components/widgets/query-filter/RangeFacetFilterUI.js.map +1 -1
  1220. package/dist/features/curator/GridPage/GridPage.js.map +1 -1
  1221. package/dist/features/curator/GridPage/components/GridPageRouter.js.map +1 -1
  1222. package/dist/features/curator/GridPage/components/GridPageTitle.js.map +1 -1
  1223. package/dist/features/curator/GridPage/components/UpdateGridPageSearchParamsForm.js.map +1 -1
  1224. package/dist/features/curator/dashboard/CuratorDashboard.js.map +1 -1
  1225. package/dist/features/curator/dashboard/components/CurationTaskCard.js.map +1 -1
  1226. package/dist/features/curator/dashboard/components/NextStepButton.js.map +1 -1
  1227. package/dist/features/curator/dashboard/components/UserOrTeamChip.js.map +1 -1
  1228. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts +5 -0
  1229. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts.map +1 -1
  1230. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js +227 -181
  1231. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js.map +1 -1
  1232. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts.map +1 -1
  1233. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +3 -0
  1234. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
  1235. package/dist/features/entity/metadata-task/components/MetadataTasksPage.d.ts.map +1 -1
  1236. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js +37 -34
  1237. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js.map +1 -1
  1238. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js.map +1 -1
  1239. package/dist/features/entity/metadata-task/hooks/useGetOrCreateGridSessionForSource.js.map +1 -1
  1240. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js.map +1 -1
  1241. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.js.map +1 -1
  1242. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.d.ts.map +1 -1
  1243. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js +1 -1
  1244. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js.map +1 -1
  1245. package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js.map +1 -1
  1246. package/dist/features/entity/metadata-task/utils/constants.d.ts +11 -3
  1247. package/dist/features/entity/metadata-task/utils/constants.d.ts.map +1 -1
  1248. package/dist/features/entity/metadata-task/utils/constants.js +2 -2
  1249. package/dist/features/entity/metadata-task/utils/constants.js.map +1 -1
  1250. package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.js.map +1 -1
  1251. package/dist/features/entity/metadata-task/utils/getGridSourceIdForTask.js.map +1 -1
  1252. package/dist/features/entity/metadata-task/utils/getLatestGridSessionForSource.js.map +1 -1
  1253. package/dist/features/entity/metadata-task/utils/taskHasAssignee.js.map +1 -1
  1254. package/dist/features/team/invitation/components/OpenInvitationsToUserCard.js.map +1 -1
  1255. package/dist/index.js +54 -53
  1256. package/dist/index.js.map +1 -1
  1257. package/dist/mocks/MockAccessApprovals.js.map +1 -1
  1258. package/dist/mocks/MockSynapseContext.js.map +1 -1
  1259. package/dist/mocks/accessRequirement/mockAccessRequirementAcls.js.map +1 -1
  1260. package/dist/mocks/accessRequirement/mockAccessRequirements.js.map +1 -1
  1261. package/dist/mocks/applicationSessionContext/MockApplicationSessionContext.js.map +1 -1
  1262. package/dist/mocks/challenge/mockChallenge.js.map +1 -1
  1263. package/dist/mocks/chat/mockChat.js.map +1 -1
  1264. package/dist/mocks/curation/mockCurationTask.js.map +1 -1
  1265. package/dist/mocks/dataaccess/MockDataAccessRequest.js.map +1 -1
  1266. package/dist/mocks/dataaccess/MockResearchProject.js.map +1 -1
  1267. package/dist/mocks/dataaccess/MockSubmission.js.map +1 -1
  1268. package/dist/mocks/dataaccess/mockAccessRequest.js.map +1 -1
  1269. package/dist/mocks/discussion/mock_discussion.js.map +1 -1
  1270. package/dist/mocks/doi/MockDoi.js.map +1 -1
  1271. package/dist/mocks/entity/index.js.map +1 -1
  1272. package/dist/mocks/entity/mockDataset.js.map +1 -1
  1273. package/dist/mocks/entity/mockDatasetCollection.js.map +1 -1
  1274. package/dist/mocks/entity/mockEntity.js.map +1 -1
  1275. package/dist/mocks/entity/mockEvaluationQueue.js.map +1 -1
  1276. package/dist/mocks/entity/mockFileEntity.js.map +1 -1
  1277. package/dist/mocks/entity/mockFileEntityACLVariants.js.map +1 -1
  1278. package/dist/mocks/entity/mockFileView.js.map +1 -1
  1279. package/dist/mocks/entity/mockGeneratedEntityData.js.map +1 -1
  1280. package/dist/mocks/entity/mockProject.js.map +1 -1
  1281. package/dist/mocks/entity/mockProjectView.js.map +1 -1
  1282. package/dist/mocks/entity/mockReleaseCardsTable.js.map +1 -1
  1283. package/dist/mocks/entity/mockRootEntity.js.map +1 -1
  1284. package/dist/mocks/entity/mockTableEntity.js.map +1 -1
  1285. package/dist/mocks/faker/fakerUtils.js.map +1 -1
  1286. package/dist/mocks/faker/generateDiscussion.js.map +1 -1
  1287. package/dist/mocks/faker/generateEvaluation.js.map +1 -1
  1288. package/dist/mocks/faker/generateFakeEntity.js.map +1 -1
  1289. package/dist/mocks/faker/generateSubscription.js.map +1 -1
  1290. package/dist/mocks/mockAnnotationColumns.js.map +1 -1
  1291. package/dist/mocks/mockCertificationQuiz.js.map +1 -1
  1292. package/dist/mocks/mockDataCatalogQuery.js.map +1 -1
  1293. package/dist/mocks/mockFileViewQuery.js.map +1 -1
  1294. package/dist/mocks/mockOAuthClientAcls.js.map +1 -1
  1295. package/dist/mocks/mockQueryResponseData.js.map +1 -1
  1296. package/dist/mocks/mockQueryResponseDataWithManyEnumFacets.js.map +1 -1
  1297. package/dist/mocks/mockSchema.js.map +1 -1
  1298. package/dist/mocks/mockSearchQueryData.js.map +1 -1
  1299. package/dist/mocks/mockShortIo.js.map +1 -1
  1300. package/dist/mocks/mockSourceAppConfigQuery.js.map +1 -1
  1301. package/dist/mocks/mockSubscription.js.map +1 -1
  1302. package/dist/mocks/mockWiki.js.map +1 -1
  1303. package/dist/mocks/mockWikiPageKey.js.map +1 -1
  1304. package/dist/mocks/mock_drug_tool_data.js.map +1 -1
  1305. package/dist/mocks/mock_file_handle.js.map +1 -1
  1306. package/dist/mocks/mock_file_statistics.js.map +1 -1
  1307. package/dist/mocks/mock_has_access_data.js.map +1 -1
  1308. package/dist/mocks/mock_upload_destination.js.map +1 -1
  1309. package/dist/mocks/msw/handlers/accessRequirementAclHandlers.js.map +1 -1
  1310. package/dist/mocks/msw/handlers/accessRequirementHandlers.js.map +1 -1
  1311. package/dist/mocks/msw/handlers/asyncJobHandlers.js.map +1 -1
  1312. package/dist/mocks/msw/handlers/authHandlers.js.map +1 -1
  1313. package/dist/mocks/msw/handlers/challengeHandlers.js.map +1 -1
  1314. package/dist/mocks/msw/handlers/changePasswordHandlers.js.map +1 -1
  1315. package/dist/mocks/msw/handlers/chatHandlers.js.map +1 -1
  1316. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js.map +1 -1
  1317. package/dist/mocks/msw/handlers/dataciteHandlers.js.map +1 -1
  1318. package/dist/mocks/msw/handlers/discussionHandlers.js.map +1 -1
  1319. package/dist/mocks/msw/handlers/doiHandlers.js.map +1 -1
  1320. package/dist/mocks/msw/handlers/entityHandlers.js.map +1 -1
  1321. package/dist/mocks/msw/handlers/evaluationHandlers.js.map +1 -1
  1322. package/dist/mocks/msw/handlers/featureFlagHandlers.js.map +1 -1
  1323. package/dist/mocks/msw/handlers/fileHandlers.js.map +1 -1
  1324. package/dist/mocks/msw/handlers/gridHandlers.js.map +1 -1
  1325. package/dist/mocks/msw/handlers/messageHandlers.js.map +1 -1
  1326. package/dist/mocks/msw/handlers/oauthClientAclHandlers.js.map +1 -1
  1327. package/dist/mocks/msw/handlers/personalAccessTokenHandlers.js.map +1 -1
  1328. package/dist/mocks/msw/handlers/projectStorageHandlers.js.map +1 -1
  1329. package/dist/mocks/msw/handlers/realmHandlers.js.map +1 -1
  1330. package/dist/mocks/msw/handlers/researchProjectHandlers.js.map +1 -1
  1331. package/dist/mocks/msw/handlers/resetTwoFactorAuthHandlers.js.map +1 -1
  1332. package/dist/mocks/msw/handlers/schemaHandlers.js.map +1 -1
  1333. package/dist/mocks/msw/handlers/searchQueryHandlers.js.map +1 -1
  1334. package/dist/mocks/msw/handlers/shortIoHandlers.js.map +1 -1
  1335. package/dist/mocks/msw/handlers/subscriptionHandlers.js.map +1 -1
  1336. package/dist/mocks/msw/handlers/tableQueryHandlers.js.map +1 -1
  1337. package/dist/mocks/msw/handlers/tableQueryService.js.map +1 -1
  1338. package/dist/mocks/msw/handlers/teamHandlers.js.map +1 -1
  1339. package/dist/mocks/msw/handlers/termsOfServiceHandlers.js.map +1 -1
  1340. package/dist/mocks/msw/handlers/userProfileHandlers.js.map +1 -1
  1341. package/dist/mocks/msw/handlers/webhookHandlers.js.map +1 -1
  1342. package/dist/mocks/msw/handlers/wikiHandlers.js.map +1 -1
  1343. package/dist/mocks/msw/handlers.js.map +1 -1
  1344. package/dist/mocks/msw/server.d.ts +1 -1
  1345. package/dist/mocks/msw/server.d.ts.map +1 -1
  1346. package/dist/mocks/msw/server.js.map +1 -1
  1347. package/dist/mocks/msw/util/BasicMockedCrudService.js.map +1 -1
  1348. package/dist/mocks/oauth/MockClient.js.map +1 -1
  1349. package/dist/mocks/personalAccessToken/mockPersonalAccessToken.js.map +1 -1
  1350. package/dist/mocks/projectStorage/mockProjectStorageLimits.js.map +1 -1
  1351. package/dist/mocks/provenance/mockActivity.js.map +1 -1
  1352. package/dist/mocks/query/defaultFileViewColumnModels.js.map +1 -1
  1353. package/dist/mocks/query/mockFeaturedDataTabsQueryData.js.map +1 -1
  1354. package/dist/mocks/query/mockHomepageQueryResultData.js.map +1 -1
  1355. package/dist/mocks/query/mockProjectViewQueryResults.js.map +1 -1
  1356. package/dist/mocks/query/mockRejectionReasonsTableQueryResultBundle.js.map +1 -1
  1357. package/dist/mocks/query/mockReleaseCardsTableQueryResultBundle.js.map +1 -1
  1358. package/dist/mocks/query/mockUserCardTableQueryResultBundle.js.map +1 -1
  1359. package/dist/mocks/query/mock_query_data.js.map +1 -1
  1360. package/dist/mocks/query/syn16787123.js.map +1 -1
  1361. package/dist/mocks/query/syn17328596.js.map +1 -1
  1362. package/dist/mocks/query/syn51735464.js.map +1 -1
  1363. package/dist/mocks/query/syn51735464GroupBySpecies.js.map +1 -1
  1364. package/dist/mocks/realm/mockRealmPrincipal.js.map +1 -1
  1365. package/dist/mocks/team/mockTeam.js.map +1 -1
  1366. package/dist/mocks/termsOfService/mockTermsOfService.js.map +1 -1
  1367. package/dist/mocks/user/mock_user_profile.js.map +1 -1
  1368. package/dist/mocks/usergroup/mockUserGroup.js.map +1 -1
  1369. package/dist/ror-client/index.js.map +1 -1
  1370. package/dist/stories/ColorPaletteInspector.js.map +1 -1
  1371. package/dist/stories/ToastDemo.js.map +1 -1
  1372. package/dist/stories/stubs/Alert/MuiAlert.js.map +1 -1
  1373. package/dist/stories/stubs/Button/MuiButton.js.map +1 -1
  1374. package/dist/stories/stubs/Dialog/MuiDialog.js.map +1 -1
  1375. package/dist/stories/stubs/TextField/MuiTextField.js.map +1 -1
  1376. package/dist/stories/stubs/Tooltip/MuiTooltip.js.map +1 -1
  1377. package/dist/synapse-client/HttpClient.js.map +1 -1
  1378. package/dist/synapse-client/SynapseClient.d.ts.map +1 -1
  1379. package/dist/synapse-client/SynapseClient.js +61 -69
  1380. package/dist/synapse-client/SynapseClient.js.map +1 -1
  1381. package/dist/synapse-client/SynapseClientUtils.js.map +1 -1
  1382. package/dist/synapse-queries/InfiniteQueryUtils.js.map +1 -1
  1383. package/dist/synapse-queries/KeyFactory.js.map +1 -1
  1384. package/dist/synapse-queries/QueryFilterUtils.js.map +1 -1
  1385. package/dist/synapse-queries/QueryMatching.test-utils.js.map +1 -1
  1386. package/dist/synapse-queries/asynchronous/usePollAsynchronousJob.js.map +1 -1
  1387. package/dist/synapse-queries/auth/useChangePassword.js.map +1 -1
  1388. package/dist/synapse-queries/auth/useOIDC.js.map +1 -1
  1389. package/dist/synapse-queries/auth/useResetPassword.js.map +1 -1
  1390. package/dist/synapse-queries/auth/useTwoFactorEnrollment.js.map +1 -1
  1391. package/dist/synapse-queries/challenge/useChallenge.js.map +1 -1
  1392. package/dist/synapse-queries/chat/useChat.js.map +1 -1
  1393. package/dist/synapse-queries/croissant/useGetCroissantUrl.js.map +1 -1
  1394. package/dist/synapse-queries/curation/task/useCurationTask.d.ts +1 -0
  1395. package/dist/synapse-queries/curation/task/useCurationTask.d.ts.map +1 -1
  1396. package/dist/synapse-queries/curation/task/useCurationTask.js +12 -2
  1397. package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
  1398. package/dist/synapse-queries/dataaccess/useAccessApprovals.js.map +1 -1
  1399. package/dist/synapse-queries/dataaccess/useAccessRequirements.js.map +1 -1
  1400. package/dist/synapse-queries/dataaccess/useDataAccessSubmission.js.map +1 -1
  1401. package/dist/synapse-queries/dataaccess/useGetApprovedSubmissionInfo.js.map +1 -1
  1402. package/dist/synapse-queries/dataaccess/useRestrictionInformation.js.map +1 -1
  1403. package/dist/synapse-queries/docker/useGetDockerTag.js.map +1 -1
  1404. package/dist/synapse-queries/doi/useDOI.js.map +1 -1
  1405. package/dist/synapse-queries/download/useDownloadList.js.map +1 -1
  1406. package/dist/synapse-queries/entity/useActionsRequiredForTableQuery.js.map +1 -1
  1407. package/dist/synapse-queries/entity/useEntity.js.map +1 -1
  1408. package/dist/synapse-queries/entity/useEntityBoundSchema.js.map +1 -1
  1409. package/dist/synapse-queries/entity/useEntityBundle.js.map +1 -1
  1410. package/dist/synapse-queries/entity/useExportTableQueryToAnalysisPlatform.js.map +1 -1
  1411. package/dist/synapse-queries/entity/useExportToADWorkbench.js.map +1 -1
  1412. package/dist/synapse-queries/entity/useExportToCavatica.js.map +1 -1
  1413. package/dist/synapse-queries/entity/useExportToPluto.js.map +1 -1
  1414. package/dist/synapse-queries/entity/useExportToTerra.js.map +1 -1
  1415. package/dist/synapse-queries/entity/useGetEntityActionsRequired.js.map +1 -1
  1416. package/dist/synapse-queries/entity/useGetEntityChallenge.js.map +1 -1
  1417. package/dist/synapse-queries/entity/useGetEntityChildren.js.map +1 -1
  1418. package/dist/synapse-queries/entity/useGetEntityForum.js.map +1 -1
  1419. package/dist/synapse-queries/entity/useGetEntityHeaders.js.map +1 -1
  1420. package/dist/synapse-queries/entity/useGetQueryResultBundle.js.map +1 -1
  1421. package/dist/synapse-queries/entity/useProjectStorage.js.map +1 -1
  1422. package/dist/synapse-queries/entity/useSchema.js.map +1 -1
  1423. package/dist/synapse-queries/evaluation/useEvaluation.js.map +1 -1
  1424. package/dist/synapse-queries/featureflags/useGetFeatureFlag.js.map +1 -1
  1425. package/dist/synapse-queries/file/UploadToS3.js.map +1 -1
  1426. package/dist/synapse-queries/file/useDirectUploadToS3.js.map +1 -1
  1427. package/dist/synapse-queries/file/useFileHandle.js.map +1 -1
  1428. package/dist/synapse-queries/file/useFiles.js.map +1 -1
  1429. package/dist/synapse-queries/file/useSynapseMultipartUpload.js.map +1 -1
  1430. package/dist/synapse-queries/file/useUploadDestination.js.map +1 -1
  1431. package/dist/synapse-queries/forum/useForum.js.map +1 -1
  1432. package/dist/synapse-queries/forum/useReply.js.map +1 -1
  1433. package/dist/synapse-queries/forum/useThread.js.map +1 -1
  1434. package/dist/synapse-queries/github/useGithub.js.map +1 -1
  1435. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js.map +1 -1
  1436. package/dist/synapse-queries/grid/useExportGrid.js.map +1 -1
  1437. package/dist/synapse-queries/grid/useGridPresignedUrl.js.map +1 -1
  1438. package/dist/synapse-queries/grid/useGridSession.js.map +1 -1
  1439. package/dist/synapse-queries/grid/useImportCsvIntoGrid.js.map +1 -1
  1440. package/dist/synapse-queries/message/useMessage.js.map +1 -1
  1441. package/dist/synapse-queries/oauth/useOAuthClient.js.map +1 -1
  1442. package/dist/synapse-queries/portal/useListPortals.js.map +1 -1
  1443. package/dist/synapse-queries/portal/usePortal.js.map +1 -1
  1444. package/dist/synapse-queries/provenance/useGetActivityForEntity.js.map +1 -1
  1445. package/dist/synapse-queries/realm/useRealmPrincipals.js.map +1 -1
  1446. package/dist/synapse-queries/ror/index.js.map +1 -1
  1447. package/dist/synapse-queries/search/useSearch.js.map +1 -1
  1448. package/dist/synapse-queries/search/useSuggestion.js.map +1 -1
  1449. package/dist/synapse-queries/subscription/useSubscription.js.map +1 -1
  1450. package/dist/synapse-queries/table/useColumnModel.js.map +1 -1
  1451. package/dist/synapse-queries/table/useDefiningSql.js.map +1 -1
  1452. package/dist/synapse-queries/table/useDownloadTable.js.map +1 -1
  1453. package/dist/synapse-queries/table/useGetCsvPreview.js.map +1 -1
  1454. package/dist/synapse-queries/table/useTableUpdateTransaction.js.map +1 -1
  1455. package/dist/synapse-queries/team/useTeam.js.map +1 -1
  1456. package/dist/synapse-queries/team/useTeamList.js.map +1 -1
  1457. package/dist/synapse-queries/team/useTeamMembers.js.map +1 -1
  1458. package/dist/synapse-queries/termsOfService/useTermsOfService.js.map +1 -1
  1459. package/dist/synapse-queries/trash/useTrashCan.js.map +1 -1
  1460. package/dist/synapse-queries/user/useCertificationQuiz.js.map +1 -1
  1461. package/dist/synapse-queries/user/useFavorites.js.map +1 -1
  1462. package/dist/synapse-queries/user/useGetUserChallenges.js.map +1 -1
  1463. package/dist/synapse-queries/user/useGetUserProjects.js.map +1 -1
  1464. package/dist/synapse-queries/user/useGetUserTeams.js.map +1 -1
  1465. package/dist/synapse-queries/user/usePersonalAccessToken.js.map +1 -1
  1466. package/dist/synapse-queries/user/useProjects.js.map +1 -1
  1467. package/dist/synapse-queries/user/useRevokeCertification.js.map +1 -1
  1468. package/dist/synapse-queries/user/useUserBundle.js.map +1 -1
  1469. package/dist/synapse-queries/user/useUserGroupHeader.js.map +1 -1
  1470. package/dist/synapse-queries/verificationSubmission/useVerificationSubmission.js.map +1 -1
  1471. package/dist/synapse-queries/webhook/useWebhook.js.map +1 -1
  1472. package/dist/synapse-queries/wiki/useWiki.js.map +1 -1
  1473. package/dist/testutils/ComponentToBePassedPropsCustomMatcher.js.map +1 -1
  1474. package/dist/testutils/IsEditingStoreTestUtils.js +17 -0
  1475. package/dist/testutils/IsEditingStoreTestUtils.js.map +1 -0
  1476. package/dist/testutils/LocationTracker.js.map +1 -1
  1477. package/dist/testutils/MarkdownSynapseUtils.js.map +1 -1
  1478. package/dist/testutils/ReactQueryMockUtils.js.map +1 -1
  1479. package/dist/testutils/TestingLibraryUtils.js +18 -16
  1480. package/dist/testutils/TestingLibraryUtils.js.map +1 -1
  1481. package/dist/testutils/muiDatePickerMock.js.map +1 -1
  1482. package/dist/testutils/vitest.setup.js.map +1 -1
  1483. package/dist/theme/DefaultTheme.js.map +1 -1
  1484. package/dist/theme/ThemeProvider.js.map +1 -1
  1485. package/dist/theme/mergeTheme.js.map +1 -1
  1486. package/dist/theme/palette/Palettes.js.map +1 -1
  1487. package/dist/theme/spreadSx.js.map +1 -1
  1488. package/dist/theme/typography/Link.js.map +1 -1
  1489. package/dist/theme/typography/Typography.js.map +1 -1
  1490. package/dist/tsconfig.build.tsbuildinfo +1 -1
  1491. package/dist/utils/APIConstants.js.map +1 -1
  1492. package/dist/utils/AppUtils/AppUtils.d.ts.map +1 -1
  1493. package/dist/utils/AppUtils/AppUtils.js +11 -11
  1494. package/dist/utils/AppUtils/AppUtils.js.map +1 -1
  1495. package/dist/utils/AppUtils/session/ApplicationSessionContext.js.map +1 -1
  1496. package/dist/utils/AppUtils/session/ApplicationSessionManager.js.map +1 -1
  1497. package/dist/utils/AppUtils/session/AuthenticationGuard.js.map +1 -1
  1498. package/dist/utils/AppUtils/session/SessionInitializedGuard.js.map +1 -1
  1499. package/dist/utils/AppUtils/session/SynapseSessionManager.js.map +1 -1
  1500. package/dist/utils/AppUtils/session/useSessionManager.js.map +1 -1
  1501. package/dist/utils/ContentTypeUtils.js.map +1 -1
  1502. package/dist/utils/OrientationBannerConstants.js.map +1 -1
  1503. package/dist/utils/PermissionLevelToAccessType.js.map +1 -1
  1504. package/dist/utils/SynapseConstants.js.map +1 -1
  1505. package/dist/utils/analytics/sendAnalyticsEvent.js.map +1 -1
  1506. package/dist/utils/analytics/sendSearchEvent.js.map +1 -1
  1507. package/dist/utils/analytics/useGoogleAnalytics.js.map +1 -1
  1508. package/dist/utils/appendFinalQueryParamKey.js.map +1 -1
  1509. package/dist/utils/challenge/evaluation/EvaluationUtils.js.map +1 -1
  1510. package/dist/utils/context/AridhiaContext.js.map +1 -1
  1511. package/dist/utils/context/DocumentMetadataContext.js.map +1 -1
  1512. package/dist/utils/context/FullContextProvider.js.map +1 -1
  1513. package/dist/utils/context/GlobalIsEditingContext.js.map +1 -1
  1514. package/dist/utils/context/SynapseContext.js.map +1 -1
  1515. package/dist/utils/featureflag/FeatureFlags.d.ts +2 -1
  1516. package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -1
  1517. package/dist/utils/featureflag/FeatureFlags.js +1 -1
  1518. package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
  1519. package/dist/utils/functions/AccessControlListUtils.js.map +1 -1
  1520. package/dist/utils/functions/ArrayUtils.js.map +1 -1
  1521. package/dist/utils/functions/DateFormatter.js.map +1 -1
  1522. package/dist/utils/functions/DateTimeUtils.js.map +1 -1
  1523. package/dist/utils/functions/EntityTypeUtils.js.map +1 -1
  1524. package/dist/utils/functions/FileHandleUtils.js.map +1 -1
  1525. package/dist/utils/functions/GridApiUtils.js.map +1 -1
  1526. package/dist/utils/functions/IsEqualTreatUndefinedAsMissing.js.map +1 -1
  1527. package/dist/utils/functions/IsExternalLink.js.map +1 -1
  1528. package/dist/utils/functions/ObjectUtils.js.map +1 -1
  1529. package/dist/utils/functions/QueryFilterUtils.js.map +1 -1
  1530. package/dist/utils/functions/RealmUtils.js.map +1 -1
  1531. package/dist/utils/functions/RegularExpressions.js.map +1 -1
  1532. package/dist/utils/functions/ResolveLinkEntity.js.map +1 -1
  1533. package/dist/utils/functions/SanitizeHtmlUtils.js.map +1 -1
  1534. package/dist/utils/functions/SanitizeHtmlUtils.test-utils.js.map +1 -1
  1535. package/dist/utils/functions/SqlFunctions.js.map +1 -1
  1536. package/dist/utils/functions/StringUtils.js.map +1 -1
  1537. package/dist/utils/functions/TableColumnSchemaUtils.js.map +1 -1
  1538. package/dist/utils/functions/calculateFriendlyFileSize.js.map +1 -1
  1539. package/dist/utils/functions/colorPalette.js.map +1 -1
  1540. package/dist/utils/functions/deepLinkingUtils.js.map +1 -1
  1541. package/dist/utils/functions/dispatchDownloadListChangeEvent.js.map +1 -1
  1542. package/dist/utils/functions/generateCsrfToken.js.map +1 -1
  1543. package/dist/utils/functions/getDataFromFromStorage.js.map +1 -1
  1544. package/dist/utils/functions/getEndpoint.js +3 -3
  1545. package/dist/utils/functions/getEndpoint.js.map +1 -1
  1546. package/dist/utils/functions/getPrincipalDisplayName.js.map +1 -1
  1547. package/dist/utils/functions/getSynapseEntityUrl.js.map +1 -1
  1548. package/dist/utils/functions/getSynapseWebClientLink.js.map +1 -1
  1549. package/dist/utils/functions/getUserData.js.map +1 -1
  1550. package/dist/utils/functions/queryUtils.js.map +1 -1
  1551. package/dist/utils/functions/testDownloadSpeed.js.map +1 -1
  1552. package/dist/utils/functions/unCamelCase.js.map +1 -1
  1553. package/dist/utils/hooks/useConfirmItems.js.map +1 -1
  1554. package/dist/utils/hooks/useCookiePreferences.d.ts.map +1 -1
  1555. package/dist/utils/hooks/useCookiePreferences.js +24 -23
  1556. package/dist/utils/hooks/useCookiePreferences.js.map +1 -1
  1557. package/dist/utils/hooks/useCreateShortUrl.js.map +1 -1
  1558. package/dist/utils/hooks/useDebouncedEffect.js.map +1 -1
  1559. package/dist/utils/hooks/useDetectSSOCode.js.map +1 -1
  1560. package/dist/utils/hooks/useDirectDownloadHandler.js.map +1 -1
  1561. package/dist/utils/hooks/useGetEntityMetadata.js.map +1 -1
  1562. package/dist/utils/hooks/useGetGoalData.js +2 -4
  1563. package/dist/utils/hooks/useGetGoalData.js.map +1 -1
  1564. package/dist/utils/hooks/useGetInfoFromIds.js.map +1 -1
  1565. package/dist/utils/hooks/useGetIsAllSelectedInfiniteList.js.map +1 -1
  1566. package/dist/utils/hooks/useImageUrlUtils.js.map +1 -1
  1567. package/dist/utils/hooks/useImmutableTableQuery/TableQueryReducerActions.js.map +1 -1
  1568. package/dist/utils/hooks/useImmutableTableQuery/useImmutableTableQuery.js.map +1 -1
  1569. package/dist/utils/hooks/useImmutableTableQuery/useTableQueryReducer.js.map +1 -1
  1570. package/dist/utils/hooks/useIsBot.js.map +1 -1
  1571. package/dist/utils/hooks/useJsonLdScriptElement.js.map +1 -1
  1572. package/dist/utils/hooks/useListState.js.map +1 -1
  1573. package/dist/utils/hooks/useLogin.js.map +1 -1
  1574. package/dist/utils/hooks/useMediaPrintOnly.js.map +1 -1
  1575. package/dist/utils/hooks/useMutuallyExclusiveState.js.map +1 -1
  1576. package/dist/utils/hooks/useNativeSearchParams.js.map +1 -1
  1577. package/dist/utils/hooks/useOneSageURL.js.map +1 -1
  1578. package/dist/utils/hooks/useOverlay.js.map +1 -1
  1579. package/dist/utils/hooks/usePreFetchResource.js.map +1 -1
  1580. package/dist/utils/hooks/useQuerySearchParam.js.map +1 -1
  1581. package/dist/utils/hooks/useScrollFadeTransition.js.map +1 -1
  1582. package/dist/utils/hooks/useSet.js.map +1 -1
  1583. package/dist/utils/hooks/useShowDesktop.js.map +1 -1
  1584. package/dist/utils/hooks/useSourceAppConfigs.js.map +1 -1
  1585. package/dist/utils/hooks/useTableImageUrl.js.map +1 -1
  1586. package/dist/utils/hooks/useTraceUpdate.js.map +1 -1
  1587. package/dist/utils/hooks/useTrackTransientListItems.js.map +1 -1
  1588. package/dist/utils/hooks/useUploadFileEntity/getActiveUploadCount.js.map +1 -1
  1589. package/dist/utils/hooks/useUploadFileEntity/getFileEntityIdWithSameName.js.map +1 -1
  1590. package/dist/utils/hooks/useUploadFileEntity/useCreateFolderPath.js.map +1 -1
  1591. package/dist/utils/hooks/useUploadFileEntity/useCreatePathsAndGetParentId.js.map +1 -1
  1592. package/dist/utils/hooks/useUploadFileEntity/useLinkFileEntityToURL.js.map +1 -1
  1593. package/dist/utils/hooks/useUploadFileEntity/usePrepareFileEntityUpload.js.map +1 -1
  1594. package/dist/utils/hooks/useUploadFileEntity/useTrackFileUploads.js.map +1 -1
  1595. package/dist/utils/hooks/useUploadFileEntity/useUploadFileEntities.js.map +1 -1
  1596. package/dist/utils/hooks/useUploadFileEntity/useUploadFiles.js.map +1 -1
  1597. package/dist/utils/hooks/useUploadFileEntity/willUploadsExceedStorageLimit.js.map +1 -1
  1598. package/dist/utils/html/TargetEnum.js.map +1 -1
  1599. package/dist/utils/jsonschema/SchemaAnnotationUtils.js.map +1 -1
  1600. package/dist/utils/jsonschema/getEnumeratedValues.js.map +1 -1
  1601. package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.js.map +1 -1
  1602. package/dist/utils/jsonschema/getRequiredAttributes.js.map +1 -1
  1603. package/dist/utils/jsonschema/getSchemaForProperty.js.map +1 -1
  1604. package/dist/utils/jsonschema/getSchemaPropertyInfo.js.map +1 -1
  1605. package/dist/utils/jsonschema/getType.js.map +1 -1
  1606. package/dist/utils/searchDefaults.js.map +1 -1
  1607. package/dist/utils/slots/SlotUtils.js.map +1 -1
  1608. package/dist/utils/types/IsType.js.map +1 -1
  1609. package/package.json +67 -66
@@ -1 +1 @@
1
- {"version":3,"file":"CardContainer.js","names":[],"sources":["../../../src/components/CardContainer/CardContainer.tsx"],"sourcesContent":["import { CardConfiguration } from '@/components/CardContainer/CardConfiguration'\nimport TableRowGenericCard from '@/components/GenericCard/TableRowGenericCard'\nimport useGetInfoFromIds from '@/utils/hooks/useGetInfoFromIds'\nimport {\n DATASET,\n FUNDER,\n GENERIC_CARD,\n MEDIUM_USER_CARD,\n OBSERVATION_CARD,\n RELEASE_CARD,\n} from '@/utils/SynapseConstants'\nimport { Box } from '@mui/material'\nimport {\n ColumnTypeEnum,\n EntityHeader,\n Row,\n RowSet,\n} from '@sage-bionetworks/synapse-types'\nimport { Suspense } from 'react'\nimport loadingScreen from '../LoadingScreen/LoadingScreen'\nimport { useQueryContext } from '../QueryContext'\nimport { useQueryVisualizationContext } from '../QueryVisualizationWrapper'\nimport { useSuspenseGetQueryMetadata } from '../QueryWrapper/useGetQueryMetadata'\nimport { ReleaseCard } from '../ReleaseCard'\nimport { Dataset, Funder } from '../row_renderers'\nimport {\n LoadingObservationCard,\n ObservationCard,\n} from '../row_renderers/ObservationCard'\nimport TotalQueryResults from '../TotalQueryResults'\nimport UserCardList from '../UserCardList/UserCardList'\nimport { SustainabilityScorecardProps } from '../SustainabilityScorecard'\n\nconst defaultListSx = { display: 'block' }\nconst releaseCardMediumListSx = {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fill, 272px)',\n gridAutoRows: 'auto',\n gridAutoFlow: 'row',\n gap: '10px',\n mb: '30px',\n}\nconst multiCardListSx = {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(300px, 1fr))',\n gridColumnGap: '20px',\n marginBottom: '20px',\n marginTop: '20px',\n\n '& .SRC-portalCard': {\n margin: '10px 0px',\n },\n}\n\nexport type CardContainerProps = {\n rowSet: RowSet\n isHeader?: boolean\n sustainabilityScorecard?: SustainabilityScorecardProps\n isAlignToLeftNav?: boolean\n title?: string\n isLoading?: boolean\n unitDescription?: string\n multiCardList?: boolean\n} & CardConfiguration\n\nfunction Card(props: { propsToPass: any; type: string }) {\n const { propsToPass, type } = props\n switch (type) {\n case DATASET:\n return <Dataset {...propsToPass} />\n case FUNDER:\n return <Funder {...propsToPass} />\n case GENERIC_CARD:\n return <TableRowGenericCard {...propsToPass} />\n case OBSERVATION_CARD:\n return <ObservationCard {...propsToPass} />\n case RELEASE_CARD:\n return <ReleaseCard {...propsToPass} />\n default:\n return <div /> // this should never happen\n }\n}\n\nfunction CardContainerInternal(props: CardContainerProps) {\n const {\n unitDescription,\n type,\n secondaryLabelLimit = 3,\n title,\n rowSet,\n multiCardList,\n ...rest\n } = props\n const { NoContentPlaceholder } = useQueryVisualizationContext()\n const queryContext = useQueryContext()\n const { data: queryMetadata } = useSuspenseGetQueryMetadata()\n const queryVisualizationContext = useQueryVisualizationContext()\n\n const dataRows: Row[] = rowSet.rows\n const isMultipleCards = dataRows.length > 1\n\n const ids = [rowSet.tableId]\n const tableEntityConcreteType = useGetInfoFromIds<EntityHeader>({\n ids,\n type: 'ENTITY_HEADER',\n })\n\n // the cards only show the loading screen on initial load, this occurs when data is undefined\n if (dataRows.length === 0) {\n // Show \"no results\" UI (see PORTALS-1497)\n return <NoContentPlaceholder />\n }\n\n const schema: Record<string, number> = {}\n rowSet.headers.forEach((element, index) => {\n schema[element.name] = index\n })\n\n let cards\n if (type === MEDIUM_USER_CARD) {\n // Hard coding ownerId as a column name containing the user profile ownerId\n // for each row, grab the column with the ownerId\n const userIdColumnIndex = rowSet.headers.findIndex(\n el => el.columnType === ColumnTypeEnum.USERID,\n )\n if (userIdColumnIndex === -1) {\n throw Error(\n 'Type MEDIUM_USER_CARD specified but no columnType USERID found',\n )\n }\n const listIds = dataRows.map(el => el.values[userIdColumnIndex])\n cards = (\n <UserCardList rowSet={rowSet} list={listIds} size={MEDIUM_USER_CARD} />\n )\n } else {\n // render the cards\n cards = dataRows.length ? (\n dataRows.map((rowData: Row, index) => {\n const propsForCard = {\n type,\n schema,\n secondaryLabelLimit,\n rowId: rowData.rowId,\n versionNumber: rowData.versionNumber,\n data: rowData.values,\n selectColumns: rowSet.headers,\n columnModels: queryMetadata.columnModels,\n tableEntityConcreteType:\n tableEntityConcreteType[0] && tableEntityConcreteType[0].type,\n tableId: rowSet.tableId,\n queryContext: queryContext,\n queryVisualizationContext,\n ...rest,\n }\n return (\n <Card\n key={rowData.rowId ?? index}\n propsToPass={propsForCard}\n type={type}\n />\n )\n })\n ) : (\n <></>\n )\n }\n\n const isReleaseCardMediumList =\n props.type === RELEASE_CARD &&\n props.releaseCardConfig?.cardSize === 'medium'\n\n let cardListSx = defaultListSx\n if (isReleaseCardMediumList) {\n cardListSx = releaseCardMediumListSx\n } else if (multiCardList && isMultipleCards) {\n cardListSx = multiCardListSx\n }\n\n return (\n <>\n <Box role=\"list\" sx={cardListSx}>\n {title && <h2 className=\"SRC-card-overview-title\">{title}</h2>}\n {!title && unitDescription && (\n <TotalQueryResults frontText={'Displaying'} />\n )}\n {/* ReactCSSTransitionGroup adds css fade in property for cards that come into view */}\n {cards}\n </Box>\n </>\n )\n}\n\nexport function CardContainer(props: CardContainerProps) {\n const fallback = (\n <div>\n {props.type === OBSERVATION_CARD && <LoadingObservationCard />}\n {props.type !== OBSERVATION_CARD && loadingScreen}\n </div>\n )\n return (\n <Suspense fallback={fallback}>\n <CardContainerInternal {...props} />\n </Suspense>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"CardContainer.js","names":[],"sources":["../../../src/components/CardContainer/CardContainer.tsx"],"sourcesContent":["import { CardConfiguration } from '@/components/CardContainer/CardConfiguration'\nimport TableRowGenericCard from '@/components/GenericCard/TableRowGenericCard'\nimport useGetInfoFromIds from '@/utils/hooks/useGetInfoFromIds'\nimport {\n DATASET,\n FUNDER,\n GENERIC_CARD,\n MEDIUM_USER_CARD,\n OBSERVATION_CARD,\n RELEASE_CARD,\n} from '@/utils/SynapseConstants'\nimport { Box } from '@mui/material'\nimport {\n ColumnTypeEnum,\n EntityHeader,\n Row,\n RowSet,\n} from '@sage-bionetworks/synapse-types'\nimport { Suspense } from 'react'\nimport loadingScreen from '../LoadingScreen/LoadingScreen'\nimport { useQueryContext } from '../QueryContext'\nimport { useQueryVisualizationContext } from '../QueryVisualizationWrapper'\nimport { useSuspenseGetQueryMetadata } from '../QueryWrapper/useGetQueryMetadata'\nimport { ReleaseCard } from '../ReleaseCard'\nimport { Dataset, Funder } from '../row_renderers'\nimport {\n LoadingObservationCard,\n ObservationCard,\n} from '../row_renderers/ObservationCard'\nimport TotalQueryResults from '../TotalQueryResults'\nimport UserCardList from '../UserCardList/UserCardList'\nimport { SustainabilityScorecardProps } from '../SustainabilityScorecard'\n\nconst defaultListSx = { display: 'block' }\nconst releaseCardMediumListSx = {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fill, 272px)',\n gridAutoRows: 'auto',\n gridAutoFlow: 'row',\n gap: '10px',\n mb: '30px',\n}\nconst multiCardListSx = {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(300px, 1fr))',\n gridColumnGap: '20px',\n marginBottom: '20px',\n marginTop: '20px',\n\n '& .SRC-portalCard': {\n margin: '10px 0px',\n },\n}\n\nexport type CardContainerProps = {\n rowSet: RowSet\n isHeader?: boolean\n sustainabilityScorecard?: SustainabilityScorecardProps\n isAlignToLeftNav?: boolean\n title?: string\n isLoading?: boolean\n unitDescription?: string\n multiCardList?: boolean\n} & CardConfiguration\n\nfunction Card(props: { propsToPass: any; type: string }) {\n const { propsToPass, type } = props\n switch (type) {\n case DATASET:\n return <Dataset {...propsToPass} />\n case FUNDER:\n return <Funder {...propsToPass} />\n case GENERIC_CARD:\n return <TableRowGenericCard {...propsToPass} />\n case OBSERVATION_CARD:\n return <ObservationCard {...propsToPass} />\n case RELEASE_CARD:\n return <ReleaseCard {...propsToPass} />\n default:\n return <div /> // this should never happen\n }\n}\n\nfunction CardContainerInternal(props: CardContainerProps) {\n const {\n unitDescription,\n type,\n secondaryLabelLimit = 3,\n title,\n rowSet,\n multiCardList,\n ...rest\n } = props\n const { NoContentPlaceholder } = useQueryVisualizationContext()\n const queryContext = useQueryContext()\n const { data: queryMetadata } = useSuspenseGetQueryMetadata()\n const queryVisualizationContext = useQueryVisualizationContext()\n\n const dataRows: Row[] = rowSet.rows\n const isMultipleCards = dataRows.length > 1\n\n const ids = [rowSet.tableId]\n const tableEntityConcreteType = useGetInfoFromIds<EntityHeader>({\n ids,\n type: 'ENTITY_HEADER',\n })\n\n // the cards only show the loading screen on initial load, this occurs when data is undefined\n if (dataRows.length === 0) {\n // Show \"no results\" UI (see PORTALS-1497)\n return <NoContentPlaceholder />\n }\n\n const schema: Record<string, number> = {}\n rowSet.headers.forEach((element, index) => {\n schema[element.name] = index\n })\n\n let cards\n if (type === MEDIUM_USER_CARD) {\n // Hard coding ownerId as a column name containing the user profile ownerId\n // for each row, grab the column with the ownerId\n const userIdColumnIndex = rowSet.headers.findIndex(\n el => el.columnType === ColumnTypeEnum.USERID,\n )\n if (userIdColumnIndex === -1) {\n throw Error(\n 'Type MEDIUM_USER_CARD specified but no columnType USERID found',\n )\n }\n const listIds = dataRows.map(el => el.values[userIdColumnIndex])\n cards = (\n <UserCardList rowSet={rowSet} list={listIds} size={MEDIUM_USER_CARD} />\n )\n } else {\n // render the cards\n cards = dataRows.length ? (\n dataRows.map((rowData: Row, index) => {\n const propsForCard = {\n type,\n schema,\n secondaryLabelLimit,\n rowId: rowData.rowId,\n versionNumber: rowData.versionNumber,\n data: rowData.values,\n selectColumns: rowSet.headers,\n columnModels: queryMetadata.columnModels,\n tableEntityConcreteType:\n tableEntityConcreteType[0] && tableEntityConcreteType[0].type,\n tableId: rowSet.tableId,\n queryContext: queryContext,\n queryVisualizationContext,\n ...rest,\n }\n return (\n <Card\n key={rowData.rowId ?? index}\n propsToPass={propsForCard}\n type={type}\n />\n )\n })\n ) : (\n <></>\n )\n }\n\n const isReleaseCardMediumList =\n props.type === RELEASE_CARD &&\n props.releaseCardConfig?.cardSize === 'medium'\n\n let cardListSx = defaultListSx\n if (isReleaseCardMediumList) {\n cardListSx = releaseCardMediumListSx\n } else if (multiCardList && isMultipleCards) {\n cardListSx = multiCardListSx\n }\n\n return (\n <>\n <Box role=\"list\" sx={cardListSx}>\n {title && <h2 className=\"SRC-card-overview-title\">{title}</h2>}\n {!title && unitDescription && (\n <TotalQueryResults frontText={'Displaying'} />\n )}\n {/* ReactCSSTransitionGroup adds css fade in property for cards that come into view */}\n {cards}\n </Box>\n </>\n )\n}\n\nexport function CardContainer(props: CardContainerProps) {\n const fallback = (\n <div>\n {props.type === OBSERVATION_CARD && <LoadingObservationCard />}\n {props.type !== OBSERVATION_CARD && loadingScreen}\n </div>\n )\n return (\n <Suspense fallback={fallback}>\n <CardContainerInternal {...props} />\n </Suspense>\n )\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CardContainerLogic.js","names":[],"sources":["../../../src/components/CardContainerLogic/CardContainerLogic.tsx"],"sourcesContent":["import { CardConfiguration } from '@/components/CardContainer/CardConfiguration'\nimport { CardLink } from '@/components/CardContainer/CardLink'\nimport { LockedColumn, SynapseConstants, UniqueFacetIdentifier } from '@/utils'\nimport {\n getAdditionalFilters,\n parseEntityIdFromSqlStatement,\n SQLOperator,\n} from '@/utils/functions/SqlFunctions'\nimport { DEFAULT_PAGE_SIZE } from '@/utils/SynapseConstants'\nimport {\n Query,\n QueryBundleRequest,\n SelectColumn,\n SortDirection,\n} from '@sage-bionetworks/synapse-types'\nimport React, { useMemo } from 'react'\nimport ColumnFilter from '../ColumnFilter/ColumnFilter'\nimport { SxProps } from '@mui/material'\nimport { IconSvgProps } from '../IconSvg'\nimport QuerySortSelector from '../QuerySortSelector'\nimport {\n QueryVisualizationWrapper,\n QueryVisualizationWrapperProps,\n} from '../QueryVisualizationWrapper'\nimport { QueryWrapper } from '../QueryWrapper'\nimport { QueryWrapperErrorBoundary } from '../QueryWrapperErrorBoundary'\nimport { RowSetView } from '../QueryWrapperPlotNav/RowSetView'\nimport { NoContentPlaceholderType } from '../SynapseTable/NoContentPlaceholderType'\n\n/**\n * Used when a column value should link to an external URL defined by a value in another column.\n * Currently only works in SynapseTable (not cards!)\n */\nexport interface ColumnSpecifiedLink {\n isMarkdown: false\n /* The column which should have the displayed value */\n matchColumnName: string\n /* The column which has the link. If the link is empty, the value will be displayed without a link. */\n linkColumnName: string\n // If set, also show a tooltip\n tooltipText?: string\n}\n\n/**\n * Used when a column value should be previewed\n * Currently only works in SynapseTable (not cards!)\n */\nexport interface EntityImage {\n // the columns whos value will be used for the markdown\n matchColumnName: string\n isEntityImage: boolean\n}\n\nexport type MarkdownLink = {\n isMarkdown: true\n // the columns whos value will be used for the markdown\n matchColumnName: string\n // If set, also show a tooltip\n tooltipText?: string\n}\n\nexport type SortConfiguration = {\n // the column that the query should be sorted on by default\n defaultColumn: string\n // the direction that the defaultColumn should be sorted on by default\n defaultDirection: SortDirection\n // the columns that the UI should surface as sortable\n sortableColumns: string[]\n}\n\nexport type CTACardLink = {\n // link text\n text: string\n // column name to use for href\n link: string\n}\n\nexport type DescriptionConfig = {\n isMarkdown?: boolean\n showFullDescriptionByDefault?: boolean\n}\n\nexport type MapValueToReactComponentConfig = {\n // The column to apply the mapping to\n matchColumnName: string\n Component: React.ComponentType<{\n /* The value of the table cell. If the column is a _LIST type, then the LIST will be parsed and this will be a string array. */\n value: string | string[] | null\n selectColumn: SelectColumn\n }>\n // discriminator\n isMapValueToReactNodeConfig: true\n}\n\n// Specify the indices in the values [] that should be rendered specially\nexport type LabelLinkConfig = (\n | MarkdownLink\n | CardLink\n | ColumnSpecifiedLink\n | EntityImage\n | MapValueToReactComponentConfig\n)[]\n\nexport type ColumnIconConfig = IconSvgProps & {\n containerSx?: SxProps\n}\n\nexport type ColumnIconConfigs = {\n columns: {\n [index: string]: {\n [index: string]: ColumnIconConfig\n }\n }\n}\n\nexport type QueryOrDeprecatedSearchParams = {\n /** The initial SQL query which will be used to populate the data in the component */\n query?: Query\n /** @deprecated use `query` */\n sql?: string\n /** Optional limit for the number of cards shown per page\n * @deprecated use `query */\n limit?: number\n /** Applies filters to the query where the key is the column name and the value is the value to filter on.\n * The filter function is controlled by sqlOperator.\n * @deprecated use `query` */\n searchParams?: Record<string, string>\n /** Operator used in the filter created using the searchParams prop\n * @deprecated use `query` */\n sqlOperator?: SQLOperator\n}\n\nexport type CardContainerLogicProps = QueryOrDeprecatedSearchParams & {\n /** Optional title to display above the component */\n title?: string\n isAlignToLeftNav?: boolean\n /** Provide a `SortConfiguration` that can be used to render UI to toggle the sorting of the cards. */\n sortConfig?: SortConfiguration\n /** Configuration used to render UI that can be used to alter a filter against a column with enumerated facets. */\n topLevelEnumeratedFacetToFilter?: UniqueFacetIdentifier\n /** Optional column to 'lock'; Values and filter controls for a locked column will not be displayed in the UI. */\n lockedColumn?: LockedColumn\n /** Optionally limit the initial number of cards shown on the first page */\n initialLimit?: number\n multiCardList?: boolean\n cardConfiguration: CardConfiguration\n} & Pick<\n QueryVisualizationWrapperProps,\n | 'rgbIndex'\n | 'unitDescription'\n | 'columnAliases'\n | 'noContentPlaceholderType'\n | 'additionalFiltersSessionStorageKey'\n >\n\n/**\n * Class wraps around CardContainer and serves as a standalone logic container for rendering cards.\n */\nexport function CardContainerLogic(props: CardContainerLogicProps) {\n const { sql: deprecatedSql } = props\n const sql = props.query?.sql ?? deprecatedSql ?? ''\n const entityId = parseEntityIdFromSqlStatement(sql)\n\n const { sortConfig, columnAliases, topLevelEnumeratedFacetToFilter } = props\n const defaultSortItems = useMemo(\n () =>\n sortConfig\n ? [\n {\n column: sortConfig.defaultColumn,\n direction: sortConfig.defaultDirection,\n },\n ]\n : undefined,\n [sortConfig],\n )\n\n const initQueryRequest: QueryBundleRequest = useMemo(() => {\n let query: Query\n if (props.query) {\n query = {\n sort: defaultSortItems,\n limit: DEFAULT_PAGE_SIZE,\n ...props.query,\n }\n } else {\n // Deprecated props were used\n const queryFilters = getAdditionalFilters(\n props.searchParams,\n props.sqlOperator,\n props.additionalFiltersSessionStorageKey,\n )\n query = {\n sql: props.sql!,\n limit: props.limit ?? DEFAULT_PAGE_SIZE,\n sort: defaultSortItems,\n additionalFilters: queryFilters,\n }\n }\n\n return {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId: entityId,\n query: query,\n partMask:\n SynapseConstants.BUNDLE_MASK_QUERY_RESULTS |\n SynapseConstants.BUNDLE_MASK_QUERY_COUNT |\n SynapseConstants.BUNDLE_MASK_QUERY_SELECT_COLUMNS |\n SynapseConstants.BUNDLE_MASK_QUERY_MAX_ROWS_PER_PAGE |\n SynapseConstants.BUNDLE_MASK_QUERY_COLUMN_MODELS |\n SynapseConstants.BUNDLE_MASK_QUERY_FACETS |\n SynapseConstants.BUNDLE_MASK_SUM_FILES_SIZE_BYTES |\n SynapseConstants.BUNDLE_MASK_LAST_UPDATED_ON,\n }\n }, [\n defaultSortItems,\n entityId,\n props.additionalFiltersSessionStorageKey,\n props.limit,\n props.query,\n props.searchParams,\n props.sql,\n props.sqlOperator,\n ])\n\n /**\n * Fully re-render the uncontrolled QueryWrapper component when the initial query changes. This eliminates a class of\n * bugs where our 'derived' state (the current query), which should be reset, is out of sync with props.\n *\n * See https://legacy.reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html#recommendation-fully-uncontrolled-component-with-a-key\n */\n const queryWrapperKey = JSON.stringify(initQueryRequest)\n\n return (\n <QueryWrapper\n {...props}\n initQueryRequest={initQueryRequest}\n isInfinite\n key={queryWrapperKey}\n >\n <QueryVisualizationWrapper\n rgbIndex={props.rgbIndex}\n unitDescription={props.unitDescription}\n columnAliases={columnAliases}\n noContentPlaceholderType={\n props.noContentPlaceholderType ?? NoContentPlaceholderType.STATIC\n }\n >\n <QueryWrapperErrorBoundary>\n {sortConfig && <QuerySortSelector sortConfig={sortConfig} />}\n {topLevelEnumeratedFacetToFilter && (\n <ColumnFilter\n topLevelEnumeratedFacetToFilter={topLevelEnumeratedFacetToFilter}\n />\n )}\n <RowSetView\n cardConfiguration={props.cardConfiguration}\n initialLimit={props.initialLimit}\n multiCardList={props.multiCardList}\n />\n </QueryWrapperErrorBoundary>\n </QueryVisualizationWrapper>\n </QueryWrapper>\n )\n}\n\nexport default CardContainerLogic\n"],"mappings":";;;;;;;;;;;;;;;AA8JA,SAAgB,EAAmB,GAAgC;CACjE,IAAM,EAAE,KAAK,MAAkB,GAEzB,IAAW,EADL,EAAM,OAAO,OAAO,KAAiB,GACE,EAE7C,EAAE,eAAY,kBAAe,uCAAoC,GACjE,IAAmB,QAErB,IACI,CACE;EACE,QAAQ,EAAW;EACnB,WAAW,EAAW;EACvB,CACF,GACD,KAAA,GACN,CAAC,EAAW,CACb,EAEK,IAAuC,QAAc;EACzD,IAAI;AACJ,MAAI,EAAM,MACR,KAAQ;GACN,MAAM;GACN,OAAA;GACA,GAAG,EAAM;GACV;OACI;GAEL,IAAM,IAAe,EACnB,EAAM,cACN,EAAM,aACN,EAAM,mCACP;AACD,OAAQ;IACN,KAAK,EAAM;IACX,OAAO,EAAM,SAAA;IACb,MAAM;IACN,mBAAmB;IACpB;;AAGH,SAAO;GACL,cAAc;GACJ;GACH;GACP,UACE;GAQH;IACA;EACD;EACA;EACA,EAAM;EACN,EAAM;EACN,EAAM;EACN,EAAM;EACN,EAAM;EACN,EAAM;EACP,CAAC,EAQI,IAAkB,KAAK,UAAU,EAAiB;AAExD,QACE,kBAAC,GAAD;EACE,GAAI;EACc;EAClB,YAAA;EACA,KAAK;EAwBQ,EAtBb,kBAAC,GAAD;EACE,UAAU,EAAM;EAChB,iBAAiB,EAAM;EACR;EACf,0BACE,EAAM,4BAA4B,EAAyB;YAG7D,kBAAC,GAAD,EAAA,UAAA;GACG,KAAc,kBAAC,GAAD,EAA+B,eAAc,CAAA;GAC3D,KACC,kBAAC,GAAD,EACmC,oCACjC,CAAA;GAEJ,kBAAC,GAAD;IACE,mBAAmB,EAAM;IACzB,cAAc,EAAM;IACpB,eAAe,EAAM;IACrB,CAAA;GACwB,EAAA,CAAA;EACF,CAAA,CACf"}
1
+ {"version":3,"file":"CardContainerLogic.js","names":[],"sources":["../../../src/components/CardContainerLogic/CardContainerLogic.tsx"],"sourcesContent":["import { CardConfiguration } from '@/components/CardContainer/CardConfiguration'\nimport { CardLink } from '@/components/CardContainer/CardLink'\nimport { LockedColumn, SynapseConstants, UniqueFacetIdentifier } from '@/utils'\nimport {\n getAdditionalFilters,\n parseEntityIdFromSqlStatement,\n SQLOperator,\n} from '@/utils/functions/SqlFunctions'\nimport { DEFAULT_PAGE_SIZE } from '@/utils/SynapseConstants'\nimport {\n Query,\n QueryBundleRequest,\n SelectColumn,\n SortDirection,\n} from '@sage-bionetworks/synapse-types'\nimport React, { useMemo } from 'react'\nimport ColumnFilter from '../ColumnFilter/ColumnFilter'\nimport { SxProps } from '@mui/material'\nimport { IconSvgProps } from '../IconSvg'\nimport QuerySortSelector from '../QuerySortSelector'\nimport {\n QueryVisualizationWrapper,\n QueryVisualizationWrapperProps,\n} from '../QueryVisualizationWrapper'\nimport { QueryWrapper } from '../QueryWrapper'\nimport { QueryWrapperErrorBoundary } from '../QueryWrapperErrorBoundary'\nimport { RowSetView } from '../QueryWrapperPlotNav/RowSetView'\nimport { NoContentPlaceholderType } from '../SynapseTable/NoContentPlaceholderType'\n\n/**\n * Used when a column value should link to an external URL defined by a value in another column.\n * Currently only works in SynapseTable (not cards!)\n */\nexport interface ColumnSpecifiedLink {\n isMarkdown: false\n /* The column which should have the displayed value */\n matchColumnName: string\n /* The column which has the link. If the link is empty, the value will be displayed without a link. */\n linkColumnName: string\n // If set, also show a tooltip\n tooltipText?: string\n}\n\n/**\n * Used when a column value should be previewed\n * Currently only works in SynapseTable (not cards!)\n */\nexport interface EntityImage {\n // the columns whos value will be used for the markdown\n matchColumnName: string\n isEntityImage: boolean\n}\n\nexport type MarkdownLink = {\n isMarkdown: true\n // the columns whos value will be used for the markdown\n matchColumnName: string\n // If set, also show a tooltip\n tooltipText?: string\n}\n\nexport type SortConfiguration = {\n // the column that the query should be sorted on by default\n defaultColumn: string\n // the direction that the defaultColumn should be sorted on by default\n defaultDirection: SortDirection\n // the columns that the UI should surface as sortable\n sortableColumns: string[]\n}\n\nexport type CTACardLink = {\n // link text\n text: string\n // column name to use for href\n link: string\n}\n\nexport type DescriptionConfig = {\n isMarkdown?: boolean\n showFullDescriptionByDefault?: boolean\n}\n\nexport type MapValueToReactComponentConfig = {\n // The column to apply the mapping to\n matchColumnName: string\n Component: React.ComponentType<{\n /* The value of the table cell. If the column is a _LIST type, then the LIST will be parsed and this will be a string array. */\n value: string | string[] | null\n selectColumn: SelectColumn\n }>\n // discriminator\n isMapValueToReactNodeConfig: true\n}\n\n// Specify the indices in the values [] that should be rendered specially\nexport type LabelLinkConfig = (\n | MarkdownLink\n | CardLink\n | ColumnSpecifiedLink\n | EntityImage\n | MapValueToReactComponentConfig\n)[]\n\nexport type ColumnIconConfig = IconSvgProps & {\n containerSx?: SxProps\n}\n\nexport type ColumnIconConfigs = {\n columns: {\n [index: string]: {\n [index: string]: ColumnIconConfig\n }\n }\n}\n\nexport type QueryOrDeprecatedSearchParams = {\n /** The initial SQL query which will be used to populate the data in the component */\n query?: Query\n /** @deprecated use `query` */\n sql?: string\n /** Optional limit for the number of cards shown per page\n * @deprecated use `query */\n limit?: number\n /** Applies filters to the query where the key is the column name and the value is the value to filter on.\n * The filter function is controlled by sqlOperator.\n * @deprecated use `query` */\n searchParams?: Record<string, string>\n /** Operator used in the filter created using the searchParams prop\n * @deprecated use `query` */\n sqlOperator?: SQLOperator\n}\n\nexport type CardContainerLogicProps = QueryOrDeprecatedSearchParams & {\n /** Optional title to display above the component */\n title?: string\n isAlignToLeftNav?: boolean\n /** Provide a `SortConfiguration` that can be used to render UI to toggle the sorting of the cards. */\n sortConfig?: SortConfiguration\n /** Configuration used to render UI that can be used to alter a filter against a column with enumerated facets. */\n topLevelEnumeratedFacetToFilter?: UniqueFacetIdentifier\n /** Optional column to 'lock'; Values and filter controls for a locked column will not be displayed in the UI. */\n lockedColumn?: LockedColumn\n /** Optionally limit the initial number of cards shown on the first page */\n initialLimit?: number\n multiCardList?: boolean\n cardConfiguration: CardConfiguration\n} & Pick<\n QueryVisualizationWrapperProps,\n | 'rgbIndex'\n | 'unitDescription'\n | 'columnAliases'\n | 'noContentPlaceholderType'\n | 'additionalFiltersSessionStorageKey'\n >\n\n/**\n * Class wraps around CardContainer and serves as a standalone logic container for rendering cards.\n */\nexport function CardContainerLogic(props: CardContainerLogicProps) {\n const { sql: deprecatedSql } = props\n const sql = props.query?.sql ?? deprecatedSql ?? ''\n const entityId = parseEntityIdFromSqlStatement(sql)\n\n const { sortConfig, columnAliases, topLevelEnumeratedFacetToFilter } = props\n const defaultSortItems = useMemo(\n () =>\n sortConfig\n ? [\n {\n column: sortConfig.defaultColumn,\n direction: sortConfig.defaultDirection,\n },\n ]\n : undefined,\n [sortConfig],\n )\n\n const initQueryRequest: QueryBundleRequest = useMemo(() => {\n let query: Query\n if (props.query) {\n query = {\n sort: defaultSortItems,\n limit: DEFAULT_PAGE_SIZE,\n ...props.query,\n }\n } else {\n // Deprecated props were used\n const queryFilters = getAdditionalFilters(\n props.searchParams,\n props.sqlOperator,\n props.additionalFiltersSessionStorageKey,\n )\n query = {\n sql: props.sql!,\n limit: props.limit ?? DEFAULT_PAGE_SIZE,\n sort: defaultSortItems,\n additionalFilters: queryFilters,\n }\n }\n\n return {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId: entityId,\n query: query,\n partMask:\n SynapseConstants.BUNDLE_MASK_QUERY_RESULTS |\n SynapseConstants.BUNDLE_MASK_QUERY_COUNT |\n SynapseConstants.BUNDLE_MASK_QUERY_SELECT_COLUMNS |\n SynapseConstants.BUNDLE_MASK_QUERY_MAX_ROWS_PER_PAGE |\n SynapseConstants.BUNDLE_MASK_QUERY_COLUMN_MODELS |\n SynapseConstants.BUNDLE_MASK_QUERY_FACETS |\n SynapseConstants.BUNDLE_MASK_SUM_FILES_SIZE_BYTES |\n SynapseConstants.BUNDLE_MASK_LAST_UPDATED_ON,\n }\n }, [\n defaultSortItems,\n entityId,\n props.additionalFiltersSessionStorageKey,\n props.limit,\n props.query,\n props.searchParams,\n props.sql,\n props.sqlOperator,\n ])\n\n /**\n * Fully re-render the uncontrolled QueryWrapper component when the initial query changes. This eliminates a class of\n * bugs where our 'derived' state (the current query), which should be reset, is out of sync with props.\n *\n * See https://legacy.reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html#recommendation-fully-uncontrolled-component-with-a-key\n */\n const queryWrapperKey = JSON.stringify(initQueryRequest)\n\n return (\n <QueryWrapper\n {...props}\n initQueryRequest={initQueryRequest}\n isInfinite\n key={queryWrapperKey}\n >\n <QueryVisualizationWrapper\n rgbIndex={props.rgbIndex}\n unitDescription={props.unitDescription}\n columnAliases={columnAliases}\n noContentPlaceholderType={\n props.noContentPlaceholderType ?? NoContentPlaceholderType.STATIC\n }\n >\n <QueryWrapperErrorBoundary>\n {sortConfig && <QuerySortSelector sortConfig={sortConfig} />}\n {topLevelEnumeratedFacetToFilter && (\n <ColumnFilter\n topLevelEnumeratedFacetToFilter={topLevelEnumeratedFacetToFilter}\n />\n )}\n <RowSetView\n cardConfiguration={props.cardConfiguration}\n initialLimit={props.initialLimit}\n multiCardList={props.multiCardList}\n />\n </QueryWrapperErrorBoundary>\n </QueryVisualizationWrapper>\n </QueryWrapper>\n )\n}\n\nexport default CardContainerLogic\n"],"mappings":";;;;;;;;;;;;;;;AA8JA,SAAgB,EAAmB,GAAgC;CACjE,IAAM,EAAE,KAAK,MAAkB,GAEzB,IAAW,EADL,EAAM,OAAO,OAAO,KAAiB,EACC,GAE5C,EAAE,eAAY,kBAAe,uCAAoC,GACjE,IAAmB,QAErB,IACI,CACE;EACE,QAAQ,EAAW;EACnB,WAAW,EAAW;CACxB,CACF,IACA,KAAA,GACN,CAAC,CAAU,CACb,GAEM,IAAuC,QAAc;EACzD,IAAI;EACJ,IAAI,EAAM,OACR,IAAQ;GACN,MAAM;GACN,OAAA;GACA,GAAG,EAAM;EACX;OACK;GAEL,IAAM,IAAe,EACnB,EAAM,cACN,EAAM,aACN,EAAM,kCACR;GACA,IAAQ;IACN,KAAK,EAAM;IACX,OAAO,EAAM,SAAA;IACb,MAAM;IACN,mBAAmB;GACrB;EACF;EAEA,OAAO;GACL,cAAc;GACJ;GACH;GACP,UACE;EAQJ;CACF,GAAG;EACD;EACA;EACA,EAAM;EACN,EAAM;EACN,EAAM;EACN,EAAM;EACN,EAAM;EACN,EAAM;CACR,CAAC,GAQK,IAAkB,KAAK,UAAU,CAAgB;CAEvD,OACE,kBAAC,GAAD;EACE,GAAI;EACc;EAClB,YAAA;EACA,KAAK;CAwBO,GAtBZ,kBAAC,GAAD;EACE,UAAU,EAAM;EAChB,iBAAiB,EAAM;EACR;EACf,0BACE,EAAM,4BAA4B,EAAyB;YAG7D,kBAAC,GAAD,EAAA,UAAA;GACG,KAAc,kBAAC,GAAD,EAA+B,cAAa,CAAA;GAC1D,KACC,kBAAC,GAAD,EACmC,mCAClC,CAAA;GAEH,kBAAC,GAAD;IACE,mBAAmB,EAAM;IACzB,cAAc,EAAM;IACpB,eAAe,EAAM;GACtB,CAAA;EACwB,EAAA,CAAA;CACF,CAAA,CACf;AAElB"}
@@ -1 +1 @@
1
- {"version":3,"file":"CardDeck.Desktop.js","names":[],"sources":["../../../src/components/CardDeck/CardDeck.Desktop.tsx"],"sourcesContent":["import { CardDeckCardProps } from '@/components/CardDeck/CardDeckCardProps'\nimport LargeButton from '@/components/styled/LargeButton'\nimport { Link } from '@mui/material'\nimport classNames from 'classnames'\n\nexport default function CardDeckDesktop({\n title,\n description,\n ctaButtonText,\n ctaButtonURL,\n headerImage,\n titleIcon,\n cardDeckType,\n}: CardDeckCardProps) {\n return (\n <div\n className={classNames(\n 'CardDeck__Card',\n cardDeckType && `CardDeck__Card--${cardDeckType}`,\n )}\n >\n <div\n className={classNames(\n 'CardDeck__Card__header__image',\n cardDeckType && `CardDeck__Card__header__image--${cardDeckType}`,\n )}\n >\n <Link href={ctaButtonURL}>{headerImage}</Link>\n </div>\n <div\n className={classNames(\n 'CardDeck__Card__header',\n cardDeckType && `CardDeck__Card__header--${cardDeckType}`,\n )}\n >\n <div\n className={classNames(\n 'CardDeck__Card__header__icon',\n cardDeckType && `CardDeck__Card__header__icon--${cardDeckType}`,\n )}\n >\n {titleIcon}\n </div>\n <div className=\"CardDeck__Card__header__info\">\n <span\n className={classNames(\n 'CardDeck__Card__header__info__title',\n cardDeckType &&\n `CardDeck__Card__header__info__title--${cardDeckType}`,\n )}\n >\n {' '}\n {['b2ai', 'b2ai-detail-card'].includes(cardDeckType ?? '') ? (\n <Link href={ctaButtonURL}>{title}</Link>\n ) : (\n title\n )}{' '}\n </span>\n </div>\n </div>\n <div\n className={classNames(\n `CardDeck__Card__summary`,\n cardDeckType && `CardDeck__Card__summary--${cardDeckType}`,\n )}\n >\n <p> {description} </p>\n {['b2ai', 'b2ai-detail-card'].includes(cardDeckType ?? '') ? null : (\n <LargeButton\n color=\"primary\"\n variant=\"outlined\" // Update variant based on cardDeckType\n href={ctaButtonURL}\n sx={{\n maxWidth: '200px',\n fontSize: '14px',\n boxShadow: 'none',\n borderColor: 'primary.main',\n color: 'primary.main',\n }}\n >\n {ctaButtonText}\n </LargeButton>\n )}\n </div>\n </div>\n )\n}\n"],"mappings":";;;;;AAKA,SAAwB,EAAgB,EACtC,UACA,gBACA,kBACA,iBACA,gBACA,cACA,mBACoB;AACpB,QACE,kBAAC,OAAD;EACE,WAAW,EACT,kBACA,KAAgB,mBAAmB,IACpC;YAJH;GAME,kBAAC,OAAD;IACE,WAAW,EACT,iCACA,KAAgB,kCAAkC,IACnD;cAED,kBAAC,GAAD;KAAM,MAAM;eAAe;KAAmB,CAAA;IAC1C,CAAA;GACN,kBAAC,OAAD;IACE,WAAW,EACT,0BACA,KAAgB,2BAA2B,IAC5C;cAJH,CAME,kBAAC,OAAD;KACE,WAAW,EACT,gCACA,KAAgB,iCAAiC,IAClD;eAEA;KACG,CAAA,EACN,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,QAAD;MACE,WAAW,EACT,uCACA,KACE,wCAAwC,IAC3C;gBALH;OAOG;OACA,CAAC,QAAQ,mBAAmB,CAAC,SAAS,KAAgB,GAAG,GACxD,kBAAC,GAAD;QAAM,MAAM;kBAAe;QAAa,CAAA,GAExC;OACC;OACE;;KACH,CAAA,CACF;;GACN,kBAAC,OAAD;IACE,WAAW,EACT,2BACA,KAAgB,4BAA4B,IAC7C;cAJH,CAME,kBAAC,KAAD,EAAA,UAAA;KAAG;KAAE;KAAY;KAAK,EAAA,CAAA,EACrB,CAAC,QAAQ,mBAAmB,CAAC,SAAS,KAAgB,GAAG,GAAG,OAC3D,kBAAC,GAAD;KACE,OAAM;KACN,SAAQ;KACR,MAAM;KACN,IAAI;MACF,UAAU;MACV,UAAU;MACV,WAAW;MACX,aAAa;MACb,OAAO;MACR;eAEA;KACW,CAAA,CAEZ;;GACF"}
1
+ {"version":3,"file":"CardDeck.Desktop.js","names":[],"sources":["../../../src/components/CardDeck/CardDeck.Desktop.tsx"],"sourcesContent":["import { CardDeckCardProps } from '@/components/CardDeck/CardDeckCardProps'\nimport LargeButton from '@/components/styled/LargeButton'\nimport { Link } from '@mui/material'\nimport classNames from 'classnames'\n\nexport default function CardDeckDesktop({\n title,\n description,\n ctaButtonText,\n ctaButtonURL,\n headerImage,\n titleIcon,\n cardDeckType,\n}: CardDeckCardProps) {\n return (\n <div\n className={classNames(\n 'CardDeck__Card',\n cardDeckType && `CardDeck__Card--${cardDeckType}`,\n )}\n >\n <div\n className={classNames(\n 'CardDeck__Card__header__image',\n cardDeckType && `CardDeck__Card__header__image--${cardDeckType}`,\n )}\n >\n <Link href={ctaButtonURL}>{headerImage}</Link>\n </div>\n <div\n className={classNames(\n 'CardDeck__Card__header',\n cardDeckType && `CardDeck__Card__header--${cardDeckType}`,\n )}\n >\n <div\n className={classNames(\n 'CardDeck__Card__header__icon',\n cardDeckType && `CardDeck__Card__header__icon--${cardDeckType}`,\n )}\n >\n {titleIcon}\n </div>\n <div className=\"CardDeck__Card__header__info\">\n <span\n className={classNames(\n 'CardDeck__Card__header__info__title',\n cardDeckType &&\n `CardDeck__Card__header__info__title--${cardDeckType}`,\n )}\n >\n {' '}\n {['b2ai', 'b2ai-detail-card'].includes(cardDeckType ?? '') ? (\n <Link href={ctaButtonURL}>{title}</Link>\n ) : (\n title\n )}{' '}\n </span>\n </div>\n </div>\n <div\n className={classNames(\n `CardDeck__Card__summary`,\n cardDeckType && `CardDeck__Card__summary--${cardDeckType}`,\n )}\n >\n <p> {description} </p>\n {['b2ai', 'b2ai-detail-card'].includes(cardDeckType ?? '') ? null : (\n <LargeButton\n color=\"primary\"\n variant=\"outlined\" // Update variant based on cardDeckType\n href={ctaButtonURL}\n sx={{\n maxWidth: '200px',\n fontSize: '14px',\n boxShadow: 'none',\n borderColor: 'primary.main',\n color: 'primary.main',\n }}\n >\n {ctaButtonText}\n </LargeButton>\n )}\n </div>\n </div>\n )\n}\n"],"mappings":";;;;;AAKA,SAAwB,EAAgB,EACtC,UACA,gBACA,kBACA,iBACA,gBACA,cACA,mBACoB;CACpB,OACE,kBAAC,OAAD;EACE,WAAW,EACT,kBACA,KAAgB,mBAAmB,GACrC;YAJF;GAME,kBAAC,OAAD;IACE,WAAW,EACT,iCACA,KAAgB,kCAAkC,GACpD;cAEA,kBAAC,GAAD;KAAM,MAAM;eAAe;IAAkB,CAAA;GAC1C,CAAA;GACL,kBAAC,OAAD;IACE,WAAW,EACT,0BACA,KAAgB,2BAA2B,GAC7C;cAJF,CAME,kBAAC,OAAD;KACE,WAAW,EACT,gCACA,KAAgB,iCAAiC,GACnD;eAEC;IACE,CAAA,GACL,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,QAAD;MACE,WAAW,EACT,uCACA,KACE,wCAAwC,GAC5C;gBALF;OAOG;OACA,CAAC,QAAQ,kBAAkB,EAAE,SAAS,KAAgB,EAAE,IACvD,kBAAC,GAAD;QAAM,MAAM;kBAAe;OAAY,CAAA,IAEvC;OACC;MACC;;IACH,CAAA,CACF;;GACL,kBAAC,OAAD;IACE,WAAW,EACT,2BACA,KAAgB,4BAA4B,GAC9C;cAJF,CAME,kBAAC,KAAD,EAAA,UAAA;KAAG;KAAE;KAAY;IAAI,EAAA,CAAA,GACpB,CAAC,QAAQ,kBAAkB,EAAE,SAAS,KAAgB,EAAE,IAAI,OAC3D,kBAAC,GAAD;KACE,OAAM;KACN,SAAQ;KACR,MAAM;KACN,IAAI;MACF,UAAU;MACV,UAAU;MACV,WAAW;MACX,aAAa;MACb,OAAO;KACT;eAEC;IACU,CAAA,CAEZ;;EACF;;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"CardDeck.Mobile.js","names":[],"sources":["../../../src/components/CardDeck/CardDeck.Mobile.tsx"],"sourcesContent":["import { CardDeckCardProps } from '@/components/CardDeck/CardDeckCardProps'\nimport LargeButton from '@/components/styled/LargeButton'\nimport { Link } from '@mui/material'\nimport ExpandableContent from '../home_page/ExpandableContent'\n\nexport default function CardDeckMobile({\n description,\n title,\n titleIcon,\n ctaButtonText,\n ctaButtonURL,\n cardDeckType,\n}: CardDeckCardProps) {\n const titleElement = (\n <div className=\"CardDeck__Mobile__Header\">\n <span className=\"CardDeck__Mobile__Header__icon\">{titleIcon}</span>\n <span className=\"CardDeck__Mobile__Header__Title\"> {title} </span>\n </div>\n )\n const content = (\n <div className=\"CardDeck__Mobile__Content\">\n <p>{description}</p>\n {cardDeckType === 'b2ai' ? (\n <Link href={ctaButtonURL} underline=\"none\">\n {ctaButtonText}\n </Link>\n ) : (\n <LargeButton\n color=\"secondary\"\n variant=\"outlined\" // Update variant based on cardDeckType\n href={ctaButtonURL}\n sx={{\n width: '170px',\n marginLeft: 0,\n fontSize: '14px',\n boxShadow: 'none',\n color: 'primary.main',\n }}\n >\n {ctaButtonText}\n </LargeButton>\n )}\n </div>\n )\n return <ExpandableContent title={titleElement} content={content} />\n}\n"],"mappings":";;;;;AAKA,SAAwB,EAAe,EACrC,gBACA,UACA,cACA,kBACA,iBACA,mBACoB;AAgCpB,QAAO,kBAAC,GAAD;EAAmB,OA9BxB,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,QAAD;IAAM,WAAU;cAAkC;IAAiB,CAAA,EACnE,kBAAC,QAAD;IAAM,WAAU;cAAhB;KAAkD;KAAE;KAAM;KAAQ;MAC9D;IA2ByB;EAAuB,SAxBtD,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,KAAD,EAAA,UAAI,GAAgB,CAAA,EACnB,MAAiB,SAChB,kBAAC,GAAD;IAAM,MAAM;IAAc,WAAU;cACjC;IACI,CAAA,GAEP,kBAAC,GAAD;IACE,OAAM;IACN,SAAQ;IACR,MAAM;IACN,IAAI;KACF,OAAO;KACP,YAAY;KACZ,UAAU;KACV,WAAW;KACX,OAAO;KACR;cAEA;IACW,CAAA,CAEZ;IAEgD;EAAW,CAAA"}
1
+ {"version":3,"file":"CardDeck.Mobile.js","names":[],"sources":["../../../src/components/CardDeck/CardDeck.Mobile.tsx"],"sourcesContent":["import { CardDeckCardProps } from '@/components/CardDeck/CardDeckCardProps'\nimport LargeButton from '@/components/styled/LargeButton'\nimport { Link } from '@mui/material'\nimport ExpandableContent from '../home_page/ExpandableContent'\n\nexport default function CardDeckMobile({\n description,\n title,\n titleIcon,\n ctaButtonText,\n ctaButtonURL,\n cardDeckType,\n}: CardDeckCardProps) {\n const titleElement = (\n <div className=\"CardDeck__Mobile__Header\">\n <span className=\"CardDeck__Mobile__Header__icon\">{titleIcon}</span>\n <span className=\"CardDeck__Mobile__Header__Title\"> {title} </span>\n </div>\n )\n const content = (\n <div className=\"CardDeck__Mobile__Content\">\n <p>{description}</p>\n {cardDeckType === 'b2ai' ? (\n <Link href={ctaButtonURL} underline=\"none\">\n {ctaButtonText}\n </Link>\n ) : (\n <LargeButton\n color=\"secondary\"\n variant=\"outlined\" // Update variant based on cardDeckType\n href={ctaButtonURL}\n sx={{\n width: '170px',\n marginLeft: 0,\n fontSize: '14px',\n boxShadow: 'none',\n color: 'primary.main',\n }}\n >\n {ctaButtonText}\n </LargeButton>\n )}\n </div>\n )\n return <ExpandableContent title={titleElement} content={content} />\n}\n"],"mappings":";;;;;AAKA,SAAwB,EAAe,EACrC,gBACA,UACA,cACA,kBACA,iBACA,mBACoB;CAgCpB,OAAO,kBAAC,GAAD;EAAmB,OA9BxB,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,QAAD;IAAM,WAAU;cAAkC;GAAgB,CAAA,GAClE,kBAAC,QAAD;IAAM,WAAU;cAAhB;KAAkD;KAAE;KAAM;IAAO;KAC9D;GA2B0B;EAAuB,SAxBtD,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,KAAD,EAAA,UAAI,EAAe,CAAA,GAClB,MAAiB,SAChB,kBAAC,GAAD;IAAM,MAAM;IAAc,WAAU;cACjC;GACG,CAAA,IAEN,kBAAC,GAAD;IACE,OAAM;IACN,SAAQ;IACR,MAAM;IACN,IAAI;KACF,OAAO;KACP,YAAY;KACZ,UAAU;KACV,WAAW;KACX,OAAO;IACT;cAEC;GACU,CAAA,CAEZ;GAEiD;CAAU,CAAA;AACpE"}
@@ -1 +1 @@
1
- {"version":3,"file":"CardDeck.js","names":[],"sources":["../../../src/components/CardDeck/CardDeck.tsx"],"sourcesContent":["import { CardDeckCardProps } from '@/components/CardDeck/CardDeckCardProps'\nimport useShowDesktop from '@/utils/hooks/useShowDesktop'\nimport classNames from 'classnames'\nimport CardDeckDesktop from './CardDeck.Desktop'\nimport CardDeckMobile from './CardDeck.Mobile'\n\nexport type CardDeckProps = {\n cards: CardDeckCardProps[]\n cardDeckType?:\n | 'cckp'\n | 'b2ai'\n | 'b2ai-detail-card' /* The type of card deck (cckp or b2ai)*/\n}\n\n/**\n * UI for a 'deck' of cards.\n */\nexport function CardDeck(props: CardDeckProps) {\n const { cards, cardDeckType } = props\n const showDesktop = useShowDesktop()\n\n const className = `CardDeck${showDesktop ? '__Desktop' : ''}`\n\n return (\n <div\n className={classNames(\n className,\n cardDeckType && `${className}--${cardDeckType}`,\n )}\n >\n {cards.map((card, i) => {\n return showDesktop ? (\n <CardDeckDesktop key={i} cardDeckType={cardDeckType} {...card} />\n ) : (\n <CardDeckMobile cardDeckType={cardDeckType} {...card} />\n )\n })}\n </div>\n )\n}\n\nexport default CardDeck\n"],"mappings":";;;;;;AAiBA,SAAgB,EAAS,GAAsB;CAC7C,IAAM,EAAE,UAAO,oBAAiB,GAC1B,IAAc,GAAgB,EAE9B,IAAY,WAAW,IAAc,cAAc;AAEzD,QACE,kBAAC,OAAD;EACE,WAAW,EACT,GACA,KAAgB,GAAG,EAAU,IAAI,IAClC;YAEA,EAAM,KAAK,GAAM,MACT,IACL,kBAAC,GAAD;GAAuC;GAAc,GAAI;GAAQ,EAA3C,EAA2C,GAEjE,kBAAC,GAAD;GAA8B;GAAc,GAAI;GAAQ,CAAA,CAE1D;EACE,CAAA"}
1
+ {"version":3,"file":"CardDeck.js","names":[],"sources":["../../../src/components/CardDeck/CardDeck.tsx"],"sourcesContent":["import { CardDeckCardProps } from '@/components/CardDeck/CardDeckCardProps'\nimport useShowDesktop from '@/utils/hooks/useShowDesktop'\nimport classNames from 'classnames'\nimport CardDeckDesktop from './CardDeck.Desktop'\nimport CardDeckMobile from './CardDeck.Mobile'\n\nexport type CardDeckProps = {\n cards: CardDeckCardProps[]\n cardDeckType?:\n | 'cckp'\n | 'b2ai'\n | 'b2ai-detail-card' /* The type of card deck (cckp or b2ai)*/\n}\n\n/**\n * UI for a 'deck' of cards.\n */\nexport function CardDeck(props: CardDeckProps) {\n const { cards, cardDeckType } = props\n const showDesktop = useShowDesktop()\n\n const className = `CardDeck${showDesktop ? '__Desktop' : ''}`\n\n return (\n <div\n className={classNames(\n className,\n cardDeckType && `${className}--${cardDeckType}`,\n )}\n >\n {cards.map((card, i) => {\n return showDesktop ? (\n <CardDeckDesktop key={i} cardDeckType={cardDeckType} {...card} />\n ) : (\n <CardDeckMobile cardDeckType={cardDeckType} {...card} />\n )\n })}\n </div>\n )\n}\n\nexport default CardDeck\n"],"mappings":";;;;;;AAiBA,SAAgB,EAAS,GAAsB;CAC7C,IAAM,EAAE,UAAO,oBAAiB,GAC1B,IAAc,EAAe,GAE7B,IAAY,WAAW,IAAc,cAAc;CAEzD,OACE,kBAAC,OAAD;EACE,WAAW,EACT,GACA,KAAgB,GAAG,EAAU,IAAI,GACnC;YAEC,EAAM,KAAK,GAAM,MACT,IACL,kBAAC,GAAD;GAAuC;GAAc,GAAI;EAAO,GAA1C,CAA0C,IAEhE,kBAAC,GAAD;GAA8B;GAAc,GAAI;EAAO,CAAA,CAE1D;CACE,CAAA;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"TableQueryCardDeck.js","names":[],"sources":["../../../src/components/CardDeck/TableQueryCardDeck.tsx"],"sourcesContent":["import { CardDeck } from '@/components/CardDeck/CardDeck'\nimport { CardDeckCardProps } from '@/components/CardDeck/CardDeckCardProps'\nimport { ImageFileHandle } from '@/components/widgets/ImageFileHandle'\nimport { useGetEntity } from '@/synapse-queries/entity/useEntity'\nimport useGetQueryResultBundle from '@/synapse-queries/entity/useGetQueryResultBundle'\nimport { SynapseConstants } from '@/utils'\nimport { getFieldIndex } from '@/utils/functions/queryUtils'\nimport { QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { CardLink } from '../CardContainer/CardLink'\nimport { getFileHandleAssociation, getLinkParams } from '../GenericCard'\n\nexport type TableQueryCardDeckProps = {\n entityId: string /* The table entity which should be queried */\n titleColumnName: string /* The column name for the title */\n descriptionColumnName: string /* The column name for the description */\n ctaButtonTextColumnName: string /* The column name for the call to action button text */\n ctaButtonURLColumnName: string /* The column name for the call to action button URL */\n titleIconFileHandleColumnName?: string /* The column name for the title icon image file */\n headerImageFileHandleColumnName?: string /* The column name for the header image file */\n cardDeckType?: 'cckp' | 'b2ai' /* The type of card deck (cckp or b2ai)*/\n linkConfig: CardLink /* The link configuration */\n}\n\n/**\n * Transforms a Synapse table into a card deck.\n */\nexport function TableQueryCardDeck(props: TableQueryCardDeckProps) {\n const {\n entityId,\n titleColumnName,\n descriptionColumnName,\n ctaButtonTextColumnName,\n ctaButtonURLColumnName,\n titleIconFileHandleColumnName,\n headerImageFileHandleColumnName,\n cardDeckType,\n linkConfig,\n } = props\n const entity = useGetEntity(entityId)\n const queryBundleRequest: QueryBundleRequest = {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId,\n partMask:\n SynapseConstants.BUNDLE_MASK_QUERY_SELECT_COLUMNS |\n SynapseConstants.BUNDLE_MASK_QUERY_RESULTS,\n query: {\n sql: `select * from ${entityId}`,\n },\n }\n const { data: queryResultBundle } =\n useGetQueryResultBundle(queryBundleRequest)\n\n const titleColumnIndex = getFieldIndex(titleColumnName, queryResultBundle)\n const descriptionColumnIndex = getFieldIndex(\n descriptionColumnName,\n queryResultBundle,\n )\n const ctaButtonTextColumnIndex = getFieldIndex(\n ctaButtonTextColumnName,\n queryResultBundle,\n )\n const ctaButtonURLColumnIndex = getFieldIndex(\n ctaButtonURLColumnName,\n queryResultBundle,\n )\n const titleIconColumnIndex = getFieldIndex(\n titleIconFileHandleColumnName,\n queryResultBundle,\n )\n const headerImageColumnIndex = getFieldIndex(\n headerImageFileHandleColumnName,\n queryResultBundle,\n )\n\n const cards = queryResultBundle?.queryResult!.queryResults.rows.map(\n (el): CardDeckCardProps => {\n const values = el.values as string[]\n if (values.some(value => value === null)) {\n // We cast values above assuming there are no null values, emit a warning just in case.\n console.warn('Row has null value(s) when no nulls expected')\n }\n\n const title = values[titleColumnIndex]\n const description = values[descriptionColumnIndex]\n const ctaButtonText = values[ctaButtonTextColumnIndex]\n const ctaButtonURL = values[ctaButtonURLColumnIndex] ?? ''\n const titleIconFileHandleIdValue = values[titleIconColumnIndex] ?? ''\n const headerImageFileHandleIdValue = values[headerImageColumnIndex] ?? ''\n\n const schema: Record<string, number> = {}\n queryResultBundle?.queryResult!.queryResults.headers.forEach(\n (header, colIndex) => {\n schema[header.name] = colIndex\n },\n )\n const { href } = getLinkParams(ctaButtonURL, linkConfig, values, schema)\n\n const titleIconFileHandleAssociation = getFileHandleAssociation(\n entity.data,\n titleIconFileHandleIdValue,\n `syn${el.rowId}`,\n )\n\n const titleIcon = titleIconFileHandleAssociation ? (\n <ImageFileHandle\n fileHandleAssociation={titleIconFileHandleAssociation}\n />\n ) : undefined\n\n const headerImageFileHandleAssociation = getFileHandleAssociation(\n entity.data,\n headerImageFileHandleIdValue,\n `syn${el.rowId}`,\n )\n\n const headerImage = headerImageFileHandleAssociation ? (\n <ImageFileHandle\n fileHandleAssociation={headerImageFileHandleAssociation}\n />\n ) : undefined\n\n return {\n title,\n description,\n ctaButtonText,\n ctaButtonURL: href,\n titleIcon,\n headerImage,\n cardDeckType,\n } satisfies CardDeckCardProps\n },\n )\n\n return <CardDeck cards={cards || []} cardDeckType={cardDeckType} />\n}\n\nexport default TableQueryCardDeck\n"],"mappings":";;;;;;;;;;;AA0BA,SAAgB,EAAmB,GAAgC;CACjE,IAAM,EACJ,aACA,oBACA,0BACA,4BACA,2BACA,kCACA,oCACA,iBACA,kBACE,GACE,IAAS,EAAa,EAAS,EAW/B,EAAE,MAAM,MACZ,EAAwB;EAVxB,cAAc;EACd;EACA,UACE;EAEF,OAAO,EACL,KAAK,iBAAiB,KACvB;EAGuB,CAAmB,EAEvC,IAAmB,EAAc,GAAiB,EAAkB,EACpE,IAAyB,EAC7B,GACA,EACD,EACK,IAA2B,EAC/B,GACA,EACD,EACK,IAA0B,EAC9B,GACA,EACD,EACK,IAAuB,EAC3B,GACA,EACD,EACK,IAAyB,EAC7B,GACA,EACD,EAEK,IAAQ,GAAmB,YAAa,aAAa,KAAK,KAC7D,MAA0B;EACzB,IAAM,IAAS,EAAG;AAClB,EAAI,EAAO,MAAK,MAAS,MAAU,KAAK,IAEtC,QAAQ,KAAK,+CAA+C;EAG9D,IAAM,IAAQ,EAAO,IACf,IAAc,EAAO,IACrB,IAAgB,EAAO,IACvB,IAAe,EAAO,MAA4B,IAClD,IAA6B,EAAO,MAAyB,IAC7D,IAA+B,EAAO,MAA2B,IAEjE,IAAiC,EAAE;AACzC,KAAmB,YAAa,aAAa,QAAQ,SAClD,GAAQ,MAAa;AACpB,KAAO,EAAO,QAAQ;IAEzB;EACD,IAAM,EAAE,YAAS,EAAc,GAAc,GAAY,GAAQ,EAAO,EAElE,IAAiC,EACrC,EAAO,MACP,GACA,MAAM,EAAG,QACV,EAEK,IAAY,IAChB,kBAAC,GAAD,EACE,uBAAuB,GACvB,CAAA,GACA,KAAA,GAEE,IAAmC,EACvC,EAAO,MACP,GACA,MAAM,EAAG,QACV;AAQD,SAAO;GACL;GACA;GACA;GACA,cAAc;GACd;GACA,aAZkB,IAClB,kBAAC,GAAD,EACE,uBAAuB,GACvB,CAAA,GACA,KAAA;GASF;GACD;GAEJ;AAED,QAAO,kBAAC,GAAD;EAAU,OAAO,KAAS,EAAE;EAAgB;EAAgB,CAAA"}
1
+ {"version":3,"file":"TableQueryCardDeck.js","names":[],"sources":["../../../src/components/CardDeck/TableQueryCardDeck.tsx"],"sourcesContent":["import { CardDeck } from '@/components/CardDeck/CardDeck'\nimport { CardDeckCardProps } from '@/components/CardDeck/CardDeckCardProps'\nimport { ImageFileHandle } from '@/components/widgets/ImageFileHandle'\nimport { useGetEntity } from '@/synapse-queries/entity/useEntity'\nimport useGetQueryResultBundle from '@/synapse-queries/entity/useGetQueryResultBundle'\nimport { SynapseConstants } from '@/utils'\nimport { getFieldIndex } from '@/utils/functions/queryUtils'\nimport { QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { CardLink } from '../CardContainer/CardLink'\nimport { getFileHandleAssociation, getLinkParams } from '../GenericCard'\n\nexport type TableQueryCardDeckProps = {\n entityId: string /* The table entity which should be queried */\n titleColumnName: string /* The column name for the title */\n descriptionColumnName: string /* The column name for the description */\n ctaButtonTextColumnName: string /* The column name for the call to action button text */\n ctaButtonURLColumnName: string /* The column name for the call to action button URL */\n titleIconFileHandleColumnName?: string /* The column name for the title icon image file */\n headerImageFileHandleColumnName?: string /* The column name for the header image file */\n cardDeckType?: 'cckp' | 'b2ai' /* The type of card deck (cckp or b2ai)*/\n linkConfig: CardLink /* The link configuration */\n}\n\n/**\n * Transforms a Synapse table into a card deck.\n */\nexport function TableQueryCardDeck(props: TableQueryCardDeckProps) {\n const {\n entityId,\n titleColumnName,\n descriptionColumnName,\n ctaButtonTextColumnName,\n ctaButtonURLColumnName,\n titleIconFileHandleColumnName,\n headerImageFileHandleColumnName,\n cardDeckType,\n linkConfig,\n } = props\n const entity = useGetEntity(entityId)\n const queryBundleRequest: QueryBundleRequest = {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId,\n partMask:\n SynapseConstants.BUNDLE_MASK_QUERY_SELECT_COLUMNS |\n SynapseConstants.BUNDLE_MASK_QUERY_RESULTS,\n query: {\n sql: `select * from ${entityId}`,\n },\n }\n const { data: queryResultBundle } =\n useGetQueryResultBundle(queryBundleRequest)\n\n const titleColumnIndex = getFieldIndex(titleColumnName, queryResultBundle)\n const descriptionColumnIndex = getFieldIndex(\n descriptionColumnName,\n queryResultBundle,\n )\n const ctaButtonTextColumnIndex = getFieldIndex(\n ctaButtonTextColumnName,\n queryResultBundle,\n )\n const ctaButtonURLColumnIndex = getFieldIndex(\n ctaButtonURLColumnName,\n queryResultBundle,\n )\n const titleIconColumnIndex = getFieldIndex(\n titleIconFileHandleColumnName,\n queryResultBundle,\n )\n const headerImageColumnIndex = getFieldIndex(\n headerImageFileHandleColumnName,\n queryResultBundle,\n )\n\n const cards = queryResultBundle?.queryResult!.queryResults.rows.map(\n (el): CardDeckCardProps => {\n const values = el.values as string[]\n if (values.some(value => value === null)) {\n // We cast values above assuming there are no null values, emit a warning just in case.\n console.warn('Row has null value(s) when no nulls expected')\n }\n\n const title = values[titleColumnIndex]\n const description = values[descriptionColumnIndex]\n const ctaButtonText = values[ctaButtonTextColumnIndex]\n const ctaButtonURL = values[ctaButtonURLColumnIndex] ?? ''\n const titleIconFileHandleIdValue = values[titleIconColumnIndex] ?? ''\n const headerImageFileHandleIdValue = values[headerImageColumnIndex] ?? ''\n\n const schema: Record<string, number> = {}\n queryResultBundle?.queryResult!.queryResults.headers.forEach(\n (header, colIndex) => {\n schema[header.name] = colIndex\n },\n )\n const { href } = getLinkParams(ctaButtonURL, linkConfig, values, schema)\n\n const titleIconFileHandleAssociation = getFileHandleAssociation(\n entity.data,\n titleIconFileHandleIdValue,\n `syn${el.rowId}`,\n )\n\n const titleIcon = titleIconFileHandleAssociation ? (\n <ImageFileHandle\n fileHandleAssociation={titleIconFileHandleAssociation}\n />\n ) : undefined\n\n const headerImageFileHandleAssociation = getFileHandleAssociation(\n entity.data,\n headerImageFileHandleIdValue,\n `syn${el.rowId}`,\n )\n\n const headerImage = headerImageFileHandleAssociation ? (\n <ImageFileHandle\n fileHandleAssociation={headerImageFileHandleAssociation}\n />\n ) : undefined\n\n return {\n title,\n description,\n ctaButtonText,\n ctaButtonURL: href,\n titleIcon,\n headerImage,\n cardDeckType,\n } satisfies CardDeckCardProps\n },\n )\n\n return <CardDeck cards={cards || []} cardDeckType={cardDeckType} />\n}\n\nexport default TableQueryCardDeck\n"],"mappings":";;;;;;;;;;;AA0BA,SAAgB,EAAmB,GAAgC;CACjE,IAAM,EACJ,aACA,oBACA,0BACA,4BACA,2BACA,kCACA,oCACA,iBACA,kBACE,GACE,IAAS,EAAa,CAAQ,GAW9B,EAAE,MAAM,MACZ,EAAwB;EAVxB,cAAc;EACd;EACA,UACE;EAEF,OAAO,EACL,KAAK,iBAAiB,IACxB;CAGwB,CAAkB,GAEtC,IAAmB,EAAc,GAAiB,CAAiB,GACnE,IAAyB,EAC7B,GACA,CACF,GACM,IAA2B,EAC/B,GACA,CACF,GACM,IAA0B,EAC9B,GACA,CACF,GACM,IAAuB,EAC3B,GACA,CACF,GACM,IAAyB,EAC7B,GACA,CACF,GAEM,IAAQ,GAAmB,YAAa,aAAa,KAAK,KAC7D,MAA0B;EACzB,IAAM,IAAS,EAAG;EAClB,AAAI,EAAO,MAAK,MAAS,MAAU,IAAI,KAErC,QAAQ,KAAK,8CAA8C;EAG7D,IAAM,IAAQ,EAAO,IACf,IAAc,EAAO,IACrB,IAAgB,EAAO,IACvB,IAAe,EAAO,MAA4B,IAClD,IAA6B,EAAO,MAAyB,IAC7D,IAA+B,EAAO,MAA2B,IAEjE,IAAiC,CAAC;EACxC,GAAmB,YAAa,aAAa,QAAQ,SAClD,GAAQ,MAAa;GACpB,EAAO,EAAO,QAAQ;EACxB,CACF;EACA,IAAM,EAAE,YAAS,EAAc,GAAc,GAAY,GAAQ,CAAM,GAEjE,IAAiC,EACrC,EAAO,MACP,GACA,MAAM,EAAG,OACX,GAEM,IAAY,IAChB,kBAAC,GAAD,EACE,uBAAuB,EACxB,CAAA,IACC,KAAA,GAEE,IAAmC,EACvC,EAAO,MACP,GACA,MAAM,EAAG,OACX;EAQA,OAAO;GACL;GACA;GACA;GACA,cAAc;GACd;GACA,aAZkB,IAClB,kBAAC,GAAD,EACE,uBAAuB,EACxB,CAAA,IACC,KAAA;GASF;EACF;CACF,CACF;CAEA,OAAO,kBAAC,GAAD;EAAU,OAAO,KAAS,CAAC;EAAiB;CAAe,CAAA;AACpE"}
@@ -1 +1 @@
1
- {"version":3,"file":"CardGridWithLinks.js","names":[],"sources":["../../../src/components/CardGridWithLinks/CardGridWithLinks.tsx"],"sourcesContent":["import React from 'react'\nimport { Box, Stack, Typography, Link, Card } from '@mui/material'\nimport { Link as RouterLink } from 'react-router'\n\ntype CardGridWithLinksConfig = {\n title: string\n description: string\n link: string\n}\n\nexport type CardGridWithLinksProps = {\n linkText: string\n cards: CardGridWithLinksConfig[]\n}\n\nconst CardGridWithLinks = ({\n cards,\n linkText,\n}: CardGridWithLinksProps): React.ReactNode => {\n return (\n <Box\n sx={{\n display: 'flex',\n gap: 2,\n width: '100%',\n flexDirection: { xs: 'column', md: 'row' },\n }}\n >\n {cards.map((card, index) => {\n return (\n <Card\n key={index}\n sx={{\n padding: '24px',\n flex: '1',\n }}\n >\n <Stack sx={{ height: '100%', gap: 2 }}>\n <Typography variant={'headline3'} sx={{ lineHeight: '20px' }}>\n {card.title}\n </Typography>\n <Typography\n variant={'body1'}\n sx={{ fontSize: '14px', flex: '1', lineHeight: 'normal' }}\n >\n {card.description}\n </Typography>\n <Typography\n sx={{\n fontSize: '14px',\n marginTop: 'auto',\n }}\n >\n <Link\n component={RouterLink}\n to={card.link}\n sx={{ textDecoration: 'none' }}\n >\n {linkText}\n </Link>\n </Typography>\n </Stack>\n </Card>\n )\n })}\n </Box>\n )\n}\n\nexport default CardGridWithLinks\n"],"mappings":";;;;;AAeA,IAAM,KAAqB,EACzB,UACA,kBAGE,kBAAC,GAAD;CACE,IAAI;EACF,SAAS;EACT,KAAK;EACL,OAAO;EACP,eAAe;GAAE,IAAI;GAAU,IAAI;GAAO;EAC3C;WAEA,EAAM,KAAK,GAAM,MAEd,kBAAC,GAAD;EAEE,IAAI;GACF,SAAS;GACT,MAAM;GACP;YAED,kBAAC,GAAD;GAAO,IAAI;IAAE,QAAQ;IAAQ,KAAK;IAAG;aAArC;IACE,kBAAC,GAAD;KAAY,SAAS;KAAa,IAAI,EAAE,YAAY,QAAQ;eACzD,EAAK;KACK,CAAA;IACb,kBAAC,GAAD;KACE,SAAS;KACT,IAAI;MAAE,UAAU;MAAQ,MAAM;MAAK,YAAY;MAAU;eAExD,EAAK;KACK,CAAA;IACb,kBAAC,GAAD;KACE,IAAI;MACF,UAAU;MACV,WAAW;MACZ;eAED,kBAAC,GAAD;MACE,WAAW;MACX,IAAI,EAAK;MACT,IAAI,EAAE,gBAAgB,QAAQ;gBAE7B;MACI,CAAA;KACI,CAAA;IACP;;EACH,EA/BA,EA+BA,CAET;CACE,CAAA"}
1
+ {"version":3,"file":"CardGridWithLinks.js","names":[],"sources":["../../../src/components/CardGridWithLinks/CardGridWithLinks.tsx"],"sourcesContent":["import React from 'react'\nimport { Box, Stack, Typography, Link, Card } from '@mui/material'\nimport { Link as RouterLink } from 'react-router'\n\ntype CardGridWithLinksConfig = {\n title: string\n description: string\n link: string\n}\n\nexport type CardGridWithLinksProps = {\n linkText: string\n cards: CardGridWithLinksConfig[]\n}\n\nconst CardGridWithLinks = ({\n cards,\n linkText,\n}: CardGridWithLinksProps): React.ReactNode => {\n return (\n <Box\n sx={{\n display: 'flex',\n gap: 2,\n width: '100%',\n flexDirection: { xs: 'column', md: 'row' },\n }}\n >\n {cards.map((card, index) => {\n return (\n <Card\n key={index}\n sx={{\n padding: '24px',\n flex: '1',\n }}\n >\n <Stack sx={{ height: '100%', gap: 2 }}>\n <Typography variant={'headline3'} sx={{ lineHeight: '20px' }}>\n {card.title}\n </Typography>\n <Typography\n variant={'body1'}\n sx={{ fontSize: '14px', flex: '1', lineHeight: 'normal' }}\n >\n {card.description}\n </Typography>\n <Typography\n sx={{\n fontSize: '14px',\n marginTop: 'auto',\n }}\n >\n <Link\n component={RouterLink}\n to={card.link}\n sx={{ textDecoration: 'none' }}\n >\n {linkText}\n </Link>\n </Typography>\n </Stack>\n </Card>\n )\n })}\n </Box>\n )\n}\n\nexport default CardGridWithLinks\n"],"mappings":";;;;;AAeA,IAAM,KAAqB,EACzB,UACA,kBAGE,kBAAC,GAAD;CACE,IAAI;EACF,SAAS;EACT,KAAK;EACL,OAAO;EACP,eAAe;GAAE,IAAI;GAAU,IAAI;EAAM;CAC3C;WAEC,EAAM,KAAK,GAAM,MAEd,kBAAC,GAAD;EAEE,IAAI;GACF,SAAS;GACT,MAAM;EACR;YAEA,kBAAC,GAAD;GAAO,IAAI;IAAE,QAAQ;IAAQ,KAAK;GAAE;aAApC;IACE,kBAAC,GAAD;KAAY,SAAS;KAAa,IAAI,EAAE,YAAY,OAAO;eACxD,EAAK;IACI,CAAA;IACZ,kBAAC,GAAD;KACE,SAAS;KACT,IAAI;MAAE,UAAU;MAAQ,MAAM;MAAK,YAAY;KAAS;eAEvD,EAAK;IACI,CAAA;IACZ,kBAAC,GAAD;KACE,IAAI;MACF,UAAU;MACV,WAAW;KACb;eAEA,kBAAC,GAAD;MACE,WAAW;MACX,IAAI,EAAK;MACT,IAAI,EAAE,gBAAgB,OAAO;gBAE5B;KACG,CAAA;IACI,CAAA;GACP;;CACH,GA/BC,CA+BD,CAET;AACE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"CertificationAnswer.js","names":[],"sources":["../../../src/components/CertificationQuiz/CertificationAnswer.tsx"],"sourcesContent":["import {\n MultichoiceAnswer,\n MultichoiceQuestion,\n} from '@sage-bionetworks/synapse-types'\nimport { Typography } from '@mui/material'\nimport { Box } from '@mui/material'\nimport { MouseEventHandler } from 'react'\n\nexport type CertificationAnswerProps = {\n question: MultichoiceQuestion\n answer: MultichoiceAnswer\n onClick?: MouseEventHandler<HTMLInputElement>\n checked?: boolean\n disabled?: boolean\n}\n\nexport default function CertificationAnswer(props: CertificationAnswerProps) {\n const { question, answer, onClick, checked, disabled } = props\n return (\n <Box sx={{ marginBottom: '5px' }}>\n <input\n id={`${question.questionIndex}-${answer.answerIndex}`}\n name={`${question.questionIndex}`}\n type={question.exclusive ? 'radio' : 'checkbox'}\n value={answer.answerIndex}\n onClick={onClick}\n checked={checked}\n disabled={disabled}\n />\n <Typography\n variant={'body1'}\n component={'label'}\n sx={{ lineHeight: '18px' }}\n htmlFor={`${question.questionIndex}-${answer.answerIndex}`}\n >\n {answer.prompt}\n </Typography>\n </Box>\n )\n}\n"],"mappings":";;;AAgBA,SAAwB,EAAoB,GAAiC;CAC3E,IAAM,EAAE,aAAU,WAAQ,YAAS,YAAS,gBAAa;AACzD,QACE,kBAAC,GAAD;EAAK,IAAI,EAAE,cAAc,OAAO;YAAhC,CACE,kBAAC,SAAD;GACE,IAAI,GAAG,EAAS,cAAc,GAAG,EAAO;GACxC,MAAM,GAAG,EAAS;GAClB,MAAM,EAAS,YAAY,UAAU;GACrC,OAAO,EAAO;GACL;GACA;GACC;GACV,CAAA,EACF,kBAAC,GAAD;GACE,SAAS;GACT,WAAW;GACX,IAAI,EAAE,YAAY,QAAQ;GAC1B,SAAS,GAAG,EAAS,cAAc,GAAG,EAAO;aAE5C,EAAO;GACG,CAAA,CACT"}
1
+ {"version":3,"file":"CertificationAnswer.js","names":[],"sources":["../../../src/components/CertificationQuiz/CertificationAnswer.tsx"],"sourcesContent":["import {\n MultichoiceAnswer,\n MultichoiceQuestion,\n} from '@sage-bionetworks/synapse-types'\nimport { Typography } from '@mui/material'\nimport { Box } from '@mui/material'\nimport { MouseEventHandler } from 'react'\n\nexport type CertificationAnswerProps = {\n question: MultichoiceQuestion\n answer: MultichoiceAnswer\n onClick?: MouseEventHandler<HTMLInputElement>\n checked?: boolean\n disabled?: boolean\n}\n\nexport default function CertificationAnswer(props: CertificationAnswerProps) {\n const { question, answer, onClick, checked, disabled } = props\n return (\n <Box sx={{ marginBottom: '5px' }}>\n <input\n id={`${question.questionIndex}-${answer.answerIndex}`}\n name={`${question.questionIndex}`}\n type={question.exclusive ? 'radio' : 'checkbox'}\n value={answer.answerIndex}\n onClick={onClick}\n checked={checked}\n disabled={disabled}\n />\n <Typography\n variant={'body1'}\n component={'label'}\n sx={{ lineHeight: '18px' }}\n htmlFor={`${question.questionIndex}-${answer.answerIndex}`}\n >\n {answer.prompt}\n </Typography>\n </Box>\n )\n}\n"],"mappings":";;;AAgBA,SAAwB,EAAoB,GAAiC;CAC3E,IAAM,EAAE,aAAU,WAAQ,YAAS,YAAS,gBAAa;CACzD,OACE,kBAAC,GAAD;EAAK,IAAI,EAAE,cAAc,MAAM;YAA/B,CACE,kBAAC,SAAD;GACE,IAAI,GAAG,EAAS,cAAc,GAAG,EAAO;GACxC,MAAM,GAAG,EAAS;GAClB,MAAM,EAAS,YAAY,UAAU;GACrC,OAAO,EAAO;GACL;GACA;GACC;EACX,CAAA,GACD,kBAAC,GAAD;GACE,SAAS;GACT,WAAW;GACX,IAAI,EAAE,YAAY,OAAO;GACzB,SAAS,GAAG,EAAS,cAAc,GAAG,EAAO;aAE5C,EAAO;EACE,CAAA,CACT;;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"CertificationQuiz.js","names":[],"sources":["../../../src/components/CertificationQuiz/CertificationQuiz.tsx"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { useGetCurrentUserBundle } from '@/synapse-queries'\nimport {\n useGetPassingRecord,\n usePostCertifiedUserTestResponse,\n} from '@/synapse-queries/user/useCertificationQuiz'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { formatDate } from '@/utils/functions/DateFormatter'\nimport { USER_BUNDLE_MASK_IS_CERTIFIED } from '@/utils/SynapseConstants'\nimport { HelpOutlineTwoTone } from '@mui/icons-material'\nimport {\n Alert,\n AlertTitle,\n Box,\n Button,\n ButtonProps,\n Link,\n Skeleton,\n Typography,\n} from '@mui/material'\nimport {\n MULTICHOICE_RESPONSE_CONCRETE_TYPE_VALUE,\n MultichoiceQuestion,\n MultichoiceResponse,\n QuestionResponse,\n Quiz,\n QuizResponse,\n} from '@sage-bionetworks/synapse-types'\nimport dayjs from 'dayjs'\nimport { ReactNode, useEffect, useRef, useState } from 'react'\nimport { useErrorHandler } from 'react-error-boundary'\nimport { MarkdownPopover } from '../Markdown/MarkdownPopover'\nimport { SkeletonParagraph, SkeletonTable } from '../Skeleton'\nimport { displayToast } from '../ToastMessage/ToastMessage'\nimport CertificationAnswer from './CertificationAnswer'\n\nfunction CertificationQuiz() {\n const { accessToken, isAuthenticated } = useSynapseContext()\n const handleError = useErrorHandler()\n const [quiz, setQuiz] = useState<Quiz | undefined>()\n const [isRetakingQuiz, setIsRetakingQuiz] = useState(false)\n const [questionResponse, setQuestionResponse] = useState<QuestionResponse[]>(\n [],\n )\n const { data: currentUserBundle } = useGetCurrentUserBundle(\n USER_BUNDLE_MASK_IS_CERTIFIED,\n )\n const isCertified = currentUserBundle?.isCertified\n const userId = currentUserBundle?.userId\n const { data: passingRecord, isLoading: isLoadingPassingRecord } =\n useGetPassingRecord(userId, {\n enabled: userId !== undefined,\n })\n const formRef = useRef<HTMLFormElement>(null)\n const GETTING_STARTED_URL =\n 'https://help.synapse.org/docs/Getting-Started.2055471150.html'\n\n const getQuiz = async () => {\n try {\n setQuiz(await SynapseClient.getCertifyQuiz(accessToken))\n } catch (err: any) {\n handleError(err)\n }\n }\n\n const { mutate: postCertifiedUserTestResponse, isPending: isSubmitting } =\n usePostCertifiedUserTestResponse({\n onSuccess: () => {\n setIsRetakingQuiz(false)\n window.scrollTo(0, 0)\n },\n throwOnError: true,\n })\n // user is taking the quiz if user is not certified, and either there is no passing record or if the user clicked to retake the quiz\n const isTakingQuiz = !isCertified && (passingRecord == null || isRetakingQuiz)\n useEffect(() => {\n if (isAuthenticated) {\n getQuiz()\n }\n }, [isAuthenticated])\n\n if (isLoadingPassingRecord || quiz == undefined) {\n return <CertificationQuizSkeleton />\n }\n\n const onUpdateAnswer = (questionIndex: number, answer: number) => {\n const newState = [\n ...questionResponse.filter(obj => obj.questionIndex !== questionIndex),\n {\n questionIndex,\n answerIndex: [answer],\n concreteType: MULTICHOICE_RESPONSE_CONCRETE_TYPE_VALUE,\n },\n ]\n setQuestionResponse(newState)\n }\n\n const handleRetakeQuiz = () => {\n formRef.current?.reset()\n setIsRetakingQuiz(true)\n setQuestionResponse([])\n getQuiz()\n }\n\n const handleSubmit = () => {\n try {\n if (quiz && quiz.questions.length === questionResponse.length) {\n const quizResponse: QuizResponse = {\n quizId: quiz.id,\n questionResponses: questionResponse,\n }\n postCertifiedUserTestResponse(quizResponse)\n } else {\n displayToast(\n 'Please answer all of the questions and try again.',\n 'warning',\n )\n }\n } catch (err: any) {\n displayToast(err.reason as string, 'danger')\n }\n }\n\n const actionButtonConfig = (helpUrl: string) =>\n helpUrl\n ? {\n content: <>More info</>,\n closePopoverOnClick: true,\n onClick: () => window.open(helpUrl, '_blank'),\n color: 'primary' as ButtonProps['color'],\n }\n : undefined\n return (\n <div>\n {passingRecord && !isTakingQuiz && (\n <>\n {(passingRecord.revokedOn || passingRecord.passed) &&\n !isCertified && (\n <Alert severity=\"error\">\n {!passingRecord.passed && (\n <AlertTitle>Certification Revoked</AlertTitle>\n )}\n <Typography variant=\"body1\" sx={{ marginTop: '5px' }}>\n Your certification was revoked. To become certified, you must{' '}\n <Link\n href=\"#\"\n onClick={e => {\n e.preventDefault()\n handleRetakeQuiz()\n }}\n >\n retake the quiz\n </Link>\n .\n </Typography>\n </Alert>\n )}\n {!passingRecord.passed && !isCertified && (\n <Alert severity=\"error\">\n {!passingRecord.passed && <AlertTitle>Quiz Failed</AlertTitle>}\n <Typography variant=\"body1\" sx={{ marginTop: '5px' }}>\n Please review the results from the previous attempt, and{' '}\n <Link\n href=\"#\"\n onClick={e => {\n e.preventDefault()\n handleRetakeQuiz()\n }}\n >\n retake the quiz\n </Link>\n .\n </Typography>\n </Alert>\n )}\n {passingRecord.passed && isCertified && (\n <Alert severity=\"success\">\n <AlertTitle>Quiz Passed</AlertTitle>\n <Typography variant=\"body1\" sx={{ marginTop: '5px' }}>\n {`You passed the Synapse Certification Quiz on ${formatDate(\n dayjs(passingRecord.passedOn),\n )}`}\n </Typography>\n </Alert>\n )}\n <Typography\n variant=\"sectionTitle\"\n sx={{ marginTop: '20px', marginBottom: '20px' }}\n >\n Score: {passingRecord.score} / {passingRecord.corrections?.length}\n </Typography>\n </>\n )}\n <div className=\"CertificationQuiz__container\">\n {quiz && isTakingQuiz && (\n <>\n <Button\n onClick={() => window.open(GETTING_STARTED_URL, '_blank')}\n className=\"help-button\"\n color=\"primary\"\n variant=\"contained\"\n >\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n <HelpOutlineTwoTone\n className=\"HelpButton\"\n style={{ marginRight: '4px', color: 'white' }}\n />\n <>Help</>\n </Box>\n </Button>\n <Typography variant=\"headline1\" sx={{ marginBottom: '25px' }}>\n Certified User Quiz\n </Typography>\n <Typography variant=\"body1\" sx={{ marginBottom: '15px' }}>\n Certified users are authorized to use the full Synapse\n functionality. In order to ensure that users who create content in\n the system and/or wish to interact more freely within Synapse are\n familiar with the governance process and Synapse operating\n procedures when dealing with possibly sensitive data, users must\n pass a short quiz (approximately 15 minutes) to become Synapse\n certified.\n </Typography>\n <Typography variant=\"body1\" sx={{ marginBottom: '15px' }}>\n Please answer the following questions to become certified.\n </Typography>\n <form ref={formRef} onSubmit={e => e.preventDefault()}>\n <ol>\n {quiz?.questions.map(question => {\n const isHelp = question.helpText || question.docLink\n return (\n <li\n key={question.questionIndex}\n role={question.exclusive ? 'radiogroup' : undefined}\n >\n <Typography\n variant={'headline3'}\n dangerouslySetInnerHTML={{ __html: question.prompt }}\n sx={{ marginTop: '40px', marginBottom: '10px' }}\n />\n {question.answers.map(choice => (\n <CertificationAnswer\n key={`${question.questionIndex}-${choice.answerIndex}`}\n question={question}\n answer={choice}\n onClick={e =>\n onUpdateAnswer(\n question.questionIndex,\n Number(e.currentTarget.value),\n )\n }\n />\n ))}\n {isHelp && (\n <MarkdownPopover\n contentProps={{ markdown: question.helpText }}\n placement=\"right\"\n sx={{\n table: {\n textAlign: 'center',\n th: {\n padding: '5px',\n },\n },\n }}\n actionButton={actionButtonConfig(question.docLink)}\n showCloseButton={true}\n >\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n marginTop: '10px',\n }}\n >\n <HelpOutlineTwoTone\n className=\"HelpButton\"\n style={{ marginRight: '4px' }}\n />\n <Link>Need help answering this question?</Link>\n </Box>\n </MarkdownPopover>\n )}\n </li>\n )\n })}\n </ol>\n </form>\n <Button\n className=\"help-button\"\n color=\"primary\"\n variant=\"contained\"\n size=\"large\"\n disabled={isSubmitting}\n onClick={() => {\n handleSubmit()\n }}\n >\n Submit\n </Button>\n </>\n )}\n\n {!isTakingQuiz && passingRecord?.corrections && (\n <ol>\n {passingRecord.corrections.map(responseCorrectness => {\n const question =\n responseCorrectness.question as MultichoiceQuestion\n const response =\n responseCorrectness.response as MultichoiceResponse\n return (\n <li key={question.questionIndex}>\n <Typography\n variant={'headline3'}\n dangerouslySetInnerHTML={{ __html: question.prompt }}\n className={\n responseCorrectness.isCorrect ? '' : 'incorrectQuestion'\n }\n sx={{ marginTop: '40px', marginBottom: '10px' }}\n />\n {question.answers.map(choice => (\n <CertificationAnswer\n key={`${question.questionIndex}-${choice.answerIndex}`}\n question={question}\n answer={choice}\n disabled={true}\n checked={response.answerIndex.includes(\n choice.answerIndex,\n )}\n />\n ))}\n </li>\n )\n })}\n </ol>\n )}\n </div>\n </div>\n )\n}\n\nfunction CertificationQuizSkeleton() {\n const questions: ReactNode[] = []\n for (let i = 0; i < 20; i++) {\n questions.push(\n <li key={i}>\n <SkeletonTable numCols={1} numRows={5} />\n </li>,\n )\n }\n return (\n <>\n <div>\n <Skeleton height=\"80px\" width=\"460px\" />\n </div>\n <SkeletonParagraph numRows={5} />\n <div className=\"CertificationQuiz__container\">\n <ol style={{ marginTop: '20px' }}>{questions}</ol>\n </div>\n </>\n )\n}\n\nexport default CertificationQuiz\n"],"mappings":"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"}
1
+ {"version":3,"file":"CertificationQuiz.js","names":[],"sources":["../../../src/components/CertificationQuiz/CertificationQuiz.tsx"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { useGetCurrentUserBundle } from '@/synapse-queries'\nimport {\n useGetPassingRecord,\n usePostCertifiedUserTestResponse,\n} from '@/synapse-queries/user/useCertificationQuiz'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { formatDate } from '@/utils/functions/DateFormatter'\nimport { USER_BUNDLE_MASK_IS_CERTIFIED } from '@/utils/SynapseConstants'\nimport { HelpOutlineTwoTone } from '@mui/icons-material'\nimport {\n Alert,\n AlertTitle,\n Box,\n Button,\n ButtonProps,\n Link,\n Skeleton,\n Typography,\n} from '@mui/material'\nimport {\n MULTICHOICE_RESPONSE_CONCRETE_TYPE_VALUE,\n MultichoiceQuestion,\n MultichoiceResponse,\n QuestionResponse,\n Quiz,\n QuizResponse,\n} from '@sage-bionetworks/synapse-types'\nimport dayjs from 'dayjs'\nimport { ReactNode, useEffect, useRef, useState } from 'react'\nimport { useErrorHandler } from 'react-error-boundary'\nimport { MarkdownPopover } from '../Markdown/MarkdownPopover'\nimport { SkeletonParagraph, SkeletonTable } from '../Skeleton'\nimport { displayToast } from '../ToastMessage/ToastMessage'\nimport CertificationAnswer from './CertificationAnswer'\n\nfunction CertificationQuiz() {\n const { accessToken, isAuthenticated } = useSynapseContext()\n const handleError = useErrorHandler()\n const [quiz, setQuiz] = useState<Quiz | undefined>()\n const [isRetakingQuiz, setIsRetakingQuiz] = useState(false)\n const [questionResponse, setQuestionResponse] = useState<QuestionResponse[]>(\n [],\n )\n const { data: currentUserBundle } = useGetCurrentUserBundle(\n USER_BUNDLE_MASK_IS_CERTIFIED,\n )\n const isCertified = currentUserBundle?.isCertified\n const userId = currentUserBundle?.userId\n const { data: passingRecord, isLoading: isLoadingPassingRecord } =\n useGetPassingRecord(userId, {\n enabled: userId !== undefined,\n })\n const formRef = useRef<HTMLFormElement>(null)\n const GETTING_STARTED_URL =\n 'https://help.synapse.org/docs/Getting-Started.2055471150.html'\n\n const getQuiz = async () => {\n try {\n setQuiz(await SynapseClient.getCertifyQuiz(accessToken))\n } catch (err: any) {\n handleError(err)\n }\n }\n\n const { mutate: postCertifiedUserTestResponse, isPending: isSubmitting } =\n usePostCertifiedUserTestResponse({\n onSuccess: () => {\n setIsRetakingQuiz(false)\n window.scrollTo(0, 0)\n },\n throwOnError: true,\n })\n // user is taking the quiz if user is not certified, and either there is no passing record or if the user clicked to retake the quiz\n const isTakingQuiz = !isCertified && (passingRecord == null || isRetakingQuiz)\n useEffect(() => {\n if (isAuthenticated) {\n getQuiz()\n }\n }, [isAuthenticated])\n\n if (isLoadingPassingRecord || quiz == undefined) {\n return <CertificationQuizSkeleton />\n }\n\n const onUpdateAnswer = (questionIndex: number, answer: number) => {\n const newState = [\n ...questionResponse.filter(obj => obj.questionIndex !== questionIndex),\n {\n questionIndex,\n answerIndex: [answer],\n concreteType: MULTICHOICE_RESPONSE_CONCRETE_TYPE_VALUE,\n },\n ]\n setQuestionResponse(newState)\n }\n\n const handleRetakeQuiz = () => {\n formRef.current?.reset()\n setIsRetakingQuiz(true)\n setQuestionResponse([])\n getQuiz()\n }\n\n const handleSubmit = () => {\n try {\n if (quiz && quiz.questions.length === questionResponse.length) {\n const quizResponse: QuizResponse = {\n quizId: quiz.id,\n questionResponses: questionResponse,\n }\n postCertifiedUserTestResponse(quizResponse)\n } else {\n displayToast(\n 'Please answer all of the questions and try again.',\n 'warning',\n )\n }\n } catch (err: any) {\n displayToast(err.reason as string, 'danger')\n }\n }\n\n const actionButtonConfig = (helpUrl: string) =>\n helpUrl\n ? {\n content: <>More info</>,\n closePopoverOnClick: true,\n onClick: () => window.open(helpUrl, '_blank'),\n color: 'primary' as ButtonProps['color'],\n }\n : undefined\n return (\n <div>\n {passingRecord && !isTakingQuiz && (\n <>\n {(passingRecord.revokedOn || passingRecord.passed) &&\n !isCertified && (\n <Alert severity=\"error\">\n {!passingRecord.passed && (\n <AlertTitle>Certification Revoked</AlertTitle>\n )}\n <Typography variant=\"body1\" sx={{ marginTop: '5px' }}>\n Your certification was revoked. To become certified, you must{' '}\n <Link\n href=\"#\"\n onClick={e => {\n e.preventDefault()\n handleRetakeQuiz()\n }}\n >\n retake the quiz\n </Link>\n .\n </Typography>\n </Alert>\n )}\n {!passingRecord.passed && !isCertified && (\n <Alert severity=\"error\">\n {!passingRecord.passed && <AlertTitle>Quiz Failed</AlertTitle>}\n <Typography variant=\"body1\" sx={{ marginTop: '5px' }}>\n Please review the results from the previous attempt, and{' '}\n <Link\n href=\"#\"\n onClick={e => {\n e.preventDefault()\n handleRetakeQuiz()\n }}\n >\n retake the quiz\n </Link>\n .\n </Typography>\n </Alert>\n )}\n {passingRecord.passed && isCertified && (\n <Alert severity=\"success\">\n <AlertTitle>Quiz Passed</AlertTitle>\n <Typography variant=\"body1\" sx={{ marginTop: '5px' }}>\n {`You passed the Synapse Certification Quiz on ${formatDate(\n dayjs(passingRecord.passedOn),\n )}`}\n </Typography>\n </Alert>\n )}\n <Typography\n variant=\"sectionTitle\"\n sx={{ marginTop: '20px', marginBottom: '20px' }}\n >\n Score: {passingRecord.score} / {passingRecord.corrections?.length}\n </Typography>\n </>\n )}\n <div className=\"CertificationQuiz__container\">\n {quiz && isTakingQuiz && (\n <>\n <Button\n onClick={() => window.open(GETTING_STARTED_URL, '_blank')}\n className=\"help-button\"\n color=\"primary\"\n variant=\"contained\"\n >\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n <HelpOutlineTwoTone\n className=\"HelpButton\"\n style={{ marginRight: '4px', color: 'white' }}\n />\n <>Help</>\n </Box>\n </Button>\n <Typography variant=\"headline1\" sx={{ marginBottom: '25px' }}>\n Certified User Quiz\n </Typography>\n <Typography variant=\"body1\" sx={{ marginBottom: '15px' }}>\n Certified users are authorized to use the full Synapse\n functionality. In order to ensure that users who create content in\n the system and/or wish to interact more freely within Synapse are\n familiar with the governance process and Synapse operating\n procedures when dealing with possibly sensitive data, users must\n pass a short quiz (approximately 15 minutes) to become Synapse\n certified.\n </Typography>\n <Typography variant=\"body1\" sx={{ marginBottom: '15px' }}>\n Please answer the following questions to become certified.\n </Typography>\n <form ref={formRef} onSubmit={e => e.preventDefault()}>\n <ol>\n {quiz?.questions.map(question => {\n const isHelp = question.helpText || question.docLink\n return (\n <li\n key={question.questionIndex}\n role={question.exclusive ? 'radiogroup' : undefined}\n >\n <Typography\n variant={'headline3'}\n dangerouslySetInnerHTML={{ __html: question.prompt }}\n sx={{ marginTop: '40px', marginBottom: '10px' }}\n />\n {question.answers.map(choice => (\n <CertificationAnswer\n key={`${question.questionIndex}-${choice.answerIndex}`}\n question={question}\n answer={choice}\n onClick={e =>\n onUpdateAnswer(\n question.questionIndex,\n Number(e.currentTarget.value),\n )\n }\n />\n ))}\n {isHelp && (\n <MarkdownPopover\n contentProps={{ markdown: question.helpText }}\n placement=\"right\"\n sx={{\n table: {\n textAlign: 'center',\n th: {\n padding: '5px',\n },\n },\n }}\n actionButton={actionButtonConfig(question.docLink)}\n showCloseButton={true}\n >\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n marginTop: '10px',\n }}\n >\n <HelpOutlineTwoTone\n className=\"HelpButton\"\n style={{ marginRight: '4px' }}\n />\n <Link>Need help answering this question?</Link>\n </Box>\n </MarkdownPopover>\n )}\n </li>\n )\n })}\n </ol>\n </form>\n <Button\n className=\"help-button\"\n color=\"primary\"\n variant=\"contained\"\n size=\"large\"\n disabled={isSubmitting}\n onClick={() => {\n handleSubmit()\n }}\n >\n Submit\n </Button>\n </>\n )}\n\n {!isTakingQuiz && passingRecord?.corrections && (\n <ol>\n {passingRecord.corrections.map(responseCorrectness => {\n const question =\n responseCorrectness.question as MultichoiceQuestion\n const response =\n responseCorrectness.response as MultichoiceResponse\n return (\n <li key={question.questionIndex}>\n <Typography\n variant={'headline3'}\n dangerouslySetInnerHTML={{ __html: question.prompt }}\n className={\n responseCorrectness.isCorrect ? '' : 'incorrectQuestion'\n }\n sx={{ marginTop: '40px', marginBottom: '10px' }}\n />\n {question.answers.map(choice => (\n <CertificationAnswer\n key={`${question.questionIndex}-${choice.answerIndex}`}\n question={question}\n answer={choice}\n disabled={true}\n checked={response.answerIndex.includes(\n choice.answerIndex,\n )}\n />\n ))}\n </li>\n )\n })}\n </ol>\n )}\n </div>\n </div>\n )\n}\n\nfunction CertificationQuizSkeleton() {\n const questions: ReactNode[] = []\n for (let i = 0; i < 20; i++) {\n questions.push(\n <li key={i}>\n <SkeletonTable numCols={1} numRows={5} />\n </li>,\n )\n }\n return (\n <>\n <div>\n <Skeleton height=\"80px\" width=\"460px\" />\n </div>\n <SkeletonParagraph numRows={5} />\n <div className=\"CertificationQuiz__container\">\n <ol style={{ marginTop: '20px' }}>{questions}</ol>\n </div>\n </>\n )\n}\n\nexport default CertificationQuiz\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChallengeDataDownload.js","names":[],"sources":["../../../src/components/ChallengeDataDownload/ChallengeDataDownload.tsx"],"sourcesContent":["import { useAddFileBatchToDownloadList } from '@/synapse-queries'\nimport { useSynapseContext } from '@/utils'\nimport AddCircleTwoToneIcon from '@mui/icons-material/AddCircleTwoTone'\nimport { Box, Button } from '@mui/material'\nimport { EntityType } from '@sage-bionetworks/synapse-client'\nimport { useCallback } from 'react'\nimport { EntityChildrenDetails } from '../EntityFinder/details/configurations/EntityChildrenDetails'\nimport { EntityDetailsListSharedProps } from '../EntityFinder/details/EntityDetailsList'\nimport { DetailsViewColumn } from '../EntityFinder/details/view/DetailsView'\nimport { EntityFinderHeader } from '../EntityFinder/EntityFinderHeader'\nimport { useEntitySelection } from '../EntityFinder/useEntitySelection'\nimport { VersionSelectionType } from '../EntityFinder/VersionSelectionType'\nimport { displayToast } from '../ToastMessage'\n\nexport type ChallengeDataDownloadProps = {\n parentContainerId: string\n}\n\nexport function ChallengeDataDownload({\n parentContainerId,\n}: ChallengeDataDownloadProps) {\n const { downloadCartPageUrl } = useSynapseContext()\n const selectMultiple = true\n const { selectedEntities, toggleSelection, setInitialVersion } =\n useEntitySelection(selectMultiple)\n\n const { mutate: addBatchToDownloadList } = useAddFileBatchToDownloadList({\n onSuccess: () => {\n displayToast(\n 'File(s) were successfully added to your Download List.',\n 'success',\n {\n primaryButtonConfig: {\n text: 'View Download List',\n onClick: () => (window.location.href = downloadCartPageUrl),\n },\n },\n )\n },\n onError: e => {\n displayToast(\n `Unable to add the file to your Download List. ${e.reason}`,\n 'danger',\n )\n },\n })\n\n const isIdSelected = useCallback(\n (entity: EntityFinderHeader) => {\n return selectedEntities.has(entity.id)\n },\n [selectedEntities],\n )\n\n const onAddClick = useCallback(() => {\n const entities = Array.from(selectedEntities.values()).map(reference => {\n return {\n fileEntityId: reference.targetId,\n versionNumber: reference.targetVersionNumber,\n }\n })\n addBatchToDownloadList(entities)\n }, [selectedEntities, addBatchToDownloadList])\n\n const sharedProps: EntityDetailsListSharedProps = {\n versionSelection: VersionSelectionType.REQUIRED,\n selectColumnType: 'checkbox',\n enableSelectAll: true,\n visibleTypes: [EntityType.file],\n selected: selectedEntities,\n selectableTypes: [EntityType.file],\n isIdSelected,\n isSelectable: () => true,\n toggleSelection,\n setInitialVersion,\n hiddenColumns: [\n DetailsViewColumn.BADGES,\n DetailsViewColumn.ADD_TO_DOWNLOAD_CART,\n DetailsViewColumn.CREATED_ON,\n DetailsViewColumn.VERSION,\n DetailsViewColumn.MODIFIED_BY,\n ],\n }\n return (\n <>\n <Box>\n <EntityChildrenDetails\n parentContainerId={parentContainerId}\n {...sharedProps}\n />\n </Box>\n <Box\n sx={{\n mt: 4,\n }}\n >\n <Button\n endIcon={<AddCircleTwoToneIcon />}\n variant={'outlined'}\n sx={{ alignSelf: 'flex-end', height: '47px' }}\n onClick={onAddClick}\n disabled={!selectedEntities.toArray().length}\n >\n Add to Download List\n </Button>\n </Box>\n </>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAkBA,SAAgB,EAAsB,EACpC,wBAC6B;CAC7B,IAAM,EAAE,2BAAwB,GAAmB,EAE7C,EAAE,qBAAkB,oBAAiB,yBACzC,EAAmB,GAAe,EAE9B,EAAE,QAAQ,MAA2B,EAA8B;EACvE,iBAAiB;AACf,KACE,0DACA,WACA,EACE,qBAAqB;IACnB,MAAM;IACN,eAAgB,OAAO,SAAS,OAAO;IACxC,EACF,CACF;;EAEH,UAAS,MAAK;AACZ,KACE,iDAAiD,EAAE,UACnD,SACD;;EAEJ,CAAC,EAEI,IAAe,GAClB,MACQ,EAAiB,IAAI,EAAO,GAAG,EAExC,CAAC,EAAiB,CACnB,EAEK,IAAa,QAAkB;AAOnC,IANiB,MAAM,KAAK,EAAiB,QAAQ,CAAC,CAAC,KAAI,OAClD;GACL,cAAc,EAAU;GACxB,eAAe,EAAU;GAC1B,EAEoB,CAAS;IAC/B,CAAC,GAAkB,EAAuB,CAAC;AAqB9C,QACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;EACqB;EAtBzB,kBAAkB,EAAqB;EACvC,kBAAkB;EAClB,iBAAiB;EACjB,cAAc,CAAC,EAAW,KAAK;EAC/B,UAAU;EACV,iBAAiB,CAAC,EAAW,KAAK;EAClC;EACA,oBAAoB;EACpB;EACA;EACA,eAAe;GACb,EAAkB;GAClB,EAAkB;GAClB,EAAkB;GAClB,EAAkB;GAClB,EAAkB;GACnB;EAQK,CAAA,EACE,CAAA,EACN,kBAAC,GAAD;EACE,IAAI,EACF,IAAI,GACL;YAED,kBAAC,GAAD;GACE,SAAS,kBAAC,GAAD,EAAwB,CAAA;GACjC,SAAS;GACT,IAAI;IAAE,WAAW;IAAY,QAAQ;IAAQ;GAC7C,SAAS;GACT,UAAU,CAAC,EAAiB,SAAS,CAAC;aACvC;GAEQ,CAAA;EACL,CAAA,CACL,EAAA,CAAA"}
1
+ {"version":3,"file":"ChallengeDataDownload.js","names":[],"sources":["../../../src/components/ChallengeDataDownload/ChallengeDataDownload.tsx"],"sourcesContent":["import { useAddFileBatchToDownloadList } from '@/synapse-queries'\nimport { useSynapseContext } from '@/utils'\nimport AddCircleTwoToneIcon from '@mui/icons-material/AddCircleTwoTone'\nimport { Box, Button } from '@mui/material'\nimport { EntityType } from '@sage-bionetworks/synapse-client'\nimport { useCallback } from 'react'\nimport { EntityChildrenDetails } from '../EntityFinder/details/configurations/EntityChildrenDetails'\nimport { EntityDetailsListSharedProps } from '../EntityFinder/details/EntityDetailsList'\nimport { DetailsViewColumn } from '../EntityFinder/details/view/DetailsView'\nimport { EntityFinderHeader } from '../EntityFinder/EntityFinderHeader'\nimport { useEntitySelection } from '../EntityFinder/useEntitySelection'\nimport { VersionSelectionType } from '../EntityFinder/VersionSelectionType'\nimport { displayToast } from '../ToastMessage'\n\nexport type ChallengeDataDownloadProps = {\n parentContainerId: string\n}\n\nexport function ChallengeDataDownload({\n parentContainerId,\n}: ChallengeDataDownloadProps) {\n const { downloadCartPageUrl } = useSynapseContext()\n const selectMultiple = true\n const { selectedEntities, toggleSelection, setInitialVersion } =\n useEntitySelection(selectMultiple)\n\n const { mutate: addBatchToDownloadList } = useAddFileBatchToDownloadList({\n onSuccess: () => {\n displayToast(\n 'File(s) were successfully added to your Download List.',\n 'success',\n {\n primaryButtonConfig: {\n text: 'View Download List',\n onClick: () => (window.location.href = downloadCartPageUrl),\n },\n },\n )\n },\n onError: e => {\n displayToast(\n `Unable to add the file to your Download List. ${e.reason}`,\n 'danger',\n )\n },\n })\n\n const isIdSelected = useCallback(\n (entity: EntityFinderHeader) => {\n return selectedEntities.has(entity.id)\n },\n [selectedEntities],\n )\n\n const onAddClick = useCallback(() => {\n const entities = Array.from(selectedEntities.values()).map(reference => {\n return {\n fileEntityId: reference.targetId,\n versionNumber: reference.targetVersionNumber,\n }\n })\n addBatchToDownloadList(entities)\n }, [selectedEntities, addBatchToDownloadList])\n\n const sharedProps: EntityDetailsListSharedProps = {\n versionSelection: VersionSelectionType.REQUIRED,\n selectColumnType: 'checkbox',\n enableSelectAll: true,\n visibleTypes: [EntityType.file],\n selected: selectedEntities,\n selectableTypes: [EntityType.file],\n isIdSelected,\n isSelectable: () => true,\n toggleSelection,\n setInitialVersion,\n hiddenColumns: [\n DetailsViewColumn.BADGES,\n DetailsViewColumn.ADD_TO_DOWNLOAD_CART,\n DetailsViewColumn.CREATED_ON,\n DetailsViewColumn.VERSION,\n DetailsViewColumn.MODIFIED_BY,\n ],\n }\n return (\n <>\n <Box>\n <EntityChildrenDetails\n parentContainerId={parentContainerId}\n {...sharedProps}\n />\n </Box>\n <Box\n sx={{\n mt: 4,\n }}\n >\n <Button\n endIcon={<AddCircleTwoToneIcon />}\n variant={'outlined'}\n sx={{ alignSelf: 'flex-end', height: '47px' }}\n onClick={onAddClick}\n disabled={!selectedEntities.toArray().length}\n >\n Add to Download List\n </Button>\n </Box>\n </>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAkBA,SAAgB,EAAsB,EACpC,wBAC6B;CAC7B,IAAM,EAAE,2BAAwB,EAAkB,GAE5C,EAAE,qBAAkB,oBAAiB,yBACzC,EAAmB,EAAc,GAE7B,EAAE,QAAQ,MAA2B,EAA8B;EACvE,iBAAiB;GACf,EACE,0DACA,WACA,EACE,qBAAqB;IACnB,MAAM;IACN,eAAgB,OAAO,SAAS,OAAO;GACzC,EACF,CACF;EACF;EACA,UAAS,MAAK;GACZ,EACE,iDAAiD,EAAE,UACnD,QACF;EACF;CACF,CAAC,GAEK,IAAe,GAClB,MACQ,EAAiB,IAAI,EAAO,EAAE,GAEvC,CAAC,CAAgB,CACnB,GAEM,IAAa,QAAkB;EAOnC,EANiB,MAAM,KAAK,EAAiB,OAAO,CAAC,EAAE,KAAI,OAClD;GACL,cAAc,EAAU;GACxB,eAAe,EAAU;EAC3B,EAEqB,CAAQ;CACjC,GAAG,CAAC,GAAkB,CAAsB,CAAC;CAqB7C,OACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;EACqB;EAtBzB,kBAAkB,EAAqB;EACvC,kBAAkB;EAClB,iBAAiB;EACjB,cAAc,CAAC,EAAW,IAAI;EAC9B,UAAU;EACV,iBAAiB,CAAC,EAAW,IAAI;EACjC;EACA,oBAAoB;EACpB;EACA;EACA,eAAe;GACb,EAAkB;GAClB,EAAkB;GAClB,EAAkB;GAClB,EAAkB;GAClB,EAAkB;EACpB;CAQK,CAAA,EACE,CAAA,GACL,kBAAC,GAAD;EACE,IAAI,EACF,IAAI,EACN;YAEA,kBAAC,GAAD;GACE,SAAS,kBAAC,GAAD,CAAuB,CAAA;GAChC,SAAS;GACT,IAAI;IAAE,WAAW;IAAY,QAAQ;GAAO;GAC5C,SAAS;GACT,UAAU,CAAC,EAAiB,QAAQ,EAAE;aACvC;EAEO,CAAA;CACL,CAAA,CACL,EAAA,CAAA;AAEN"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChallengeDetailPage.js","names":[],"sources":["../../../src/components/ChallengeDetailPage/ChallengeDetailPage.tsx"],"sourcesContent":["import {\n useDeleteTeamMembership,\n useGetCurrentUserProfile,\n useGetEntityChallenge,\n useGetUserSubmissionTeams,\n} from '@/synapse-queries'\nimport { useSynapseContext } from '@/utils'\nimport { useState } from 'react'\nimport ChallengeRegisterButton from '../ChallengeRegisterButton'\nimport ChallengeRequirementsModal from '../ChallengeRequirementsModal/ChallengeRequirementsModal'\nimport ChallengeTeamWizard from '../ChallengeTeamWizard'\nimport ConfirmationDialog from '../ConfirmationDialog'\nimport { displayToast } from '../ToastMessage'\n\nexport type ChallengeDetailPageProps = {\n projectId: string\n}\n\nexport function ChallengeDetailPage({ projectId }: ChallengeDetailPageProps) {\n const { isAuthenticated } = useSynapseContext()\n const [showSubmissionTeamWizard, setShowSubmissionTeamWizard] =\n useState<boolean>(false)\n const [showRegistrationModal, setShowRegistrationModal] =\n useState<boolean>(false)\n const [showLeaveConfirm, setShowLeaveConfirm] = useState<boolean>(false)\n const { data: userProfile } = useGetCurrentUserProfile()\n\n const toggleShowWizard = (b: boolean) => {\n setShowSubmissionTeamWizard(b)\n }\n const onJoinClick = () => {\n setShowRegistrationModal(true)\n }\n const onLeaveClick = () => {\n setShowLeaveConfirm(true)\n }\n\n const { data: challenge } = useGetEntityChallenge(projectId)\n\n // Determine whether the given user belongs to any submission teams\n // If so, we should not show them the ChallengeTeamWizard once they have registered.\n const { data: userSubmissionTeams } = useGetUserSubmissionTeams(\n challenge?.id!,\n 1,\n 0,\n {\n enabled: Boolean(isAuthenticated && challenge),\n },\n )\n const isMemberOfSubmissionTeam =\n userSubmissionTeams && userSubmissionTeams.results.length > 0\n\n const { mutate: leaveChallenge } = useDeleteTeamMembership({\n onSuccess: () => {\n displayToast('You are no longer registered for this challenge', 'info')\n },\n onError: error => {\n displayToast(error.reason, 'danger')\n },\n })\n\n const doLeaveChallenge = () => {\n if (isAuthenticated && challenge && userProfile) {\n /**\n * What does it mean to leave a challenge?\n * Simply leaving the participant team may not be enough...\n * the user may also belong to one or more challenge submission team(s).\n * Should they be removed from those?\n * What if the team belongs to more than one challenge?\n * Should the team be removed from the challenge instead?\n * Only a team admin can request this, however.\n */\n\n leaveChallenge({\n teamId: challenge.participantTeamId,\n userId: userProfile.ownerId,\n })\n }\n }\n\n const handleRequirementsHide = () => {\n setShowRegistrationModal(false)\n }\n const handleRegistrationComplete = () => {\n setShowRegistrationModal(false)\n // Only guide the user to join/create a submission team if they are not already part of one.\n setShowSubmissionTeamWizard(!isMemberOfSubmissionTeam)\n }\n\n return (\n <>\n <ChallengeRegisterButton\n projectId={projectId}\n onJoinClick={onJoinClick}\n onLeaveClick={onLeaveClick}\n />\n <ChallengeRequirementsModal\n open={showRegistrationModal}\n projectId={projectId}\n onRegisterComplete={handleRegistrationComplete}\n onCancel={handleRequirementsHide}\n />\n <ChallengeTeamWizard\n projectId={projectId}\n onClose={() => {\n toggleShowWizard(false)\n }}\n isShowingModal={showSubmissionTeamWizard}\n />\n <ConfirmationDialog\n open={showLeaveConfirm}\n title={'Leave this Challenge?'}\n content={'Are you sure you want to leave this Challenge?'}\n onCancel={() => setShowLeaveConfirm(false)}\n onConfirm={() => {\n doLeaveChallenge()\n setShowLeaveConfirm(false)\n }}\n />\n </>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAkBA,SAAgB,EAAoB,EAAE,gBAAuC;CAC3E,IAAM,EAAE,uBAAoB,GAAmB,EACzC,CAAC,GAA0B,KAC/B,EAAkB,GAAM,EACpB,CAAC,GAAuB,KAC5B,EAAkB,GAAM,EACpB,CAAC,GAAkB,KAAuB,EAAkB,GAAM,EAClE,EAAE,MAAM,MAAgB,GAA0B,EAElD,KAAoB,MAAe;AACvC,IAA4B,EAAE;IAE1B,UAAoB;AACxB,IAAyB,GAAK;IAE1B,UAAqB;AACzB,IAAoB,GAAK;IAGrB,EAAE,MAAM,MAAc,EAAsB,EAAU,EAItD,EAAE,MAAM,MAAwB,EACpC,GAAW,IACX,GACA,GACA,EACE,SAAS,GAAQ,KAAmB,IACrC,CACF,EACK,IACJ,KAAuB,EAAoB,QAAQ,SAAS,GAExD,EAAE,QAAQ,MAAmB,EAAwB;EACzD,iBAAiB;AACf,KAAa,mDAAmD,OAAO;;EAEzE,UAAS,MAAS;AAChB,KAAa,EAAM,QAAQ,SAAS;;EAEvC,CAAC,EAEI,UAAyB;AAC7B,EAAI,KAAmB,KAAa,KAWlC,EAAe;GACb,QAAQ,EAAU;GAClB,QAAQ,EAAY;GACrB,CAAC;;AAaN,QACE,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD;GACa;GACE;GACC;GACd,CAAA;EACF,kBAAC,GAAD;GACE,MAAM;GACK;GACX,0BAhBmC;AAGvC,IAFA,EAAyB,GAAM,EAE/B,EAA4B,CAAC,EAAyB;;GAclD,gBApB+B;AACnC,MAAyB,GAAM;;GAoB3B,CAAA;EACF,kBAAC,GAAD;GACa;GACX,eAAe;AACb,MAAiB,GAAM;;GAEzB,gBAAgB;GAChB,CAAA;EACF,kBAAC,GAAD;GACE,MAAM;GACN,OAAO;GACP,SAAS;GACT,gBAAgB,EAAoB,GAAM;GAC1C,iBAAiB;AAEf,IADA,GAAkB,EAClB,EAAoB,GAAM;;GAE5B,CAAA;EACD,EAAA,CAAA"}
1
+ {"version":3,"file":"ChallengeDetailPage.js","names":[],"sources":["../../../src/components/ChallengeDetailPage/ChallengeDetailPage.tsx"],"sourcesContent":["import {\n useDeleteTeamMembership,\n useGetCurrentUserProfile,\n useGetEntityChallenge,\n useGetUserSubmissionTeams,\n} from '@/synapse-queries'\nimport { useSynapseContext } from '@/utils'\nimport { useState } from 'react'\nimport ChallengeRegisterButton from '../ChallengeRegisterButton'\nimport ChallengeRequirementsModal from '../ChallengeRequirementsModal/ChallengeRequirementsModal'\nimport ChallengeTeamWizard from '../ChallengeTeamWizard'\nimport ConfirmationDialog from '../ConfirmationDialog'\nimport { displayToast } from '../ToastMessage'\n\nexport type ChallengeDetailPageProps = {\n projectId: string\n}\n\nexport function ChallengeDetailPage({ projectId }: ChallengeDetailPageProps) {\n const { isAuthenticated } = useSynapseContext()\n const [showSubmissionTeamWizard, setShowSubmissionTeamWizard] =\n useState<boolean>(false)\n const [showRegistrationModal, setShowRegistrationModal] =\n useState<boolean>(false)\n const [showLeaveConfirm, setShowLeaveConfirm] = useState<boolean>(false)\n const { data: userProfile } = useGetCurrentUserProfile()\n\n const toggleShowWizard = (b: boolean) => {\n setShowSubmissionTeamWizard(b)\n }\n const onJoinClick = () => {\n setShowRegistrationModal(true)\n }\n const onLeaveClick = () => {\n setShowLeaveConfirm(true)\n }\n\n const { data: challenge } = useGetEntityChallenge(projectId)\n\n // Determine whether the given user belongs to any submission teams\n // If so, we should not show them the ChallengeTeamWizard once they have registered.\n const { data: userSubmissionTeams } = useGetUserSubmissionTeams(\n challenge?.id!,\n 1,\n 0,\n {\n enabled: Boolean(isAuthenticated && challenge),\n },\n )\n const isMemberOfSubmissionTeam =\n userSubmissionTeams && userSubmissionTeams.results.length > 0\n\n const { mutate: leaveChallenge } = useDeleteTeamMembership({\n onSuccess: () => {\n displayToast('You are no longer registered for this challenge', 'info')\n },\n onError: error => {\n displayToast(error.reason, 'danger')\n },\n })\n\n const doLeaveChallenge = () => {\n if (isAuthenticated && challenge && userProfile) {\n /**\n * What does it mean to leave a challenge?\n * Simply leaving the participant team may not be enough...\n * the user may also belong to one or more challenge submission team(s).\n * Should they be removed from those?\n * What if the team belongs to more than one challenge?\n * Should the team be removed from the challenge instead?\n * Only a team admin can request this, however.\n */\n\n leaveChallenge({\n teamId: challenge.participantTeamId,\n userId: userProfile.ownerId,\n })\n }\n }\n\n const handleRequirementsHide = () => {\n setShowRegistrationModal(false)\n }\n const handleRegistrationComplete = () => {\n setShowRegistrationModal(false)\n // Only guide the user to join/create a submission team if they are not already part of one.\n setShowSubmissionTeamWizard(!isMemberOfSubmissionTeam)\n }\n\n return (\n <>\n <ChallengeRegisterButton\n projectId={projectId}\n onJoinClick={onJoinClick}\n onLeaveClick={onLeaveClick}\n />\n <ChallengeRequirementsModal\n open={showRegistrationModal}\n projectId={projectId}\n onRegisterComplete={handleRegistrationComplete}\n onCancel={handleRequirementsHide}\n />\n <ChallengeTeamWizard\n projectId={projectId}\n onClose={() => {\n toggleShowWizard(false)\n }}\n isShowingModal={showSubmissionTeamWizard}\n />\n <ConfirmationDialog\n open={showLeaveConfirm}\n title={'Leave this Challenge?'}\n content={'Are you sure you want to leave this Challenge?'}\n onCancel={() => setShowLeaveConfirm(false)}\n onConfirm={() => {\n doLeaveChallenge()\n setShowLeaveConfirm(false)\n }}\n />\n </>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAkBA,SAAgB,EAAoB,EAAE,gBAAuC;CAC3E,IAAM,EAAE,uBAAoB,EAAkB,GACxC,CAAC,GAA0B,KAC/B,EAAkB,EAAK,GACnB,CAAC,GAAuB,KAC5B,EAAkB,EAAK,GACnB,CAAC,GAAkB,KAAuB,EAAkB,EAAK,GACjE,EAAE,MAAM,MAAgB,EAAyB,GAEjD,KAAoB,MAAe;EACvC,EAA4B,CAAC;CAC/B,GACM,UAAoB;EACxB,EAAyB,EAAI;CAC/B,GACM,UAAqB;EACzB,EAAoB,EAAI;CAC1B,GAEM,EAAE,MAAM,MAAc,EAAsB,CAAS,GAIrD,EAAE,MAAM,MAAwB,EACpC,GAAW,IACX,GACA,GACA,EACE,SAAS,GAAQ,KAAmB,GACtC,CACF,GACM,IACJ,KAAuB,EAAoB,QAAQ,SAAS,GAExD,EAAE,QAAQ,MAAmB,EAAwB;EACzD,iBAAiB;GACf,EAAa,mDAAmD,MAAM;EACxE;EACA,UAAS,MAAS;GAChB,EAAa,EAAM,QAAQ,QAAQ;EACrC;CACF,CAAC,GAEK,UAAyB;EAC7B,AAAI,KAAmB,KAAa,KAWlC,EAAe;GACb,QAAQ,EAAU;GAClB,QAAQ,EAAY;EACtB,CAAC;CAEL;CAWA,OACE,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD;GACa;GACE;GACC;EACf,CAAA;EACD,kBAAC,GAAD;GACE,MAAM;GACK;GACX,0BAhBmC;IAGvC,AAFA,EAAyB,EAAK,GAE9B,EAA4B,CAAC,CAAwB;GACvD;GAaM,gBApB+B;IACnC,EAAyB,EAAK;GAChC;EAmBK,CAAA;EACD,kBAAC,GAAD;GACa;GACX,eAAe;IACb,EAAiB,EAAK;GACxB;GACA,gBAAgB;EACjB,CAAA;EACD,kBAAC,GAAD;GACE,MAAM;GACN,OAAO;GACP,SAAS;GACT,gBAAgB,EAAoB,EAAK;GACzC,iBAAiB;IAEf,AADA,EAAiB,GACjB,EAAoB,EAAK;GAC3B;EACD,CAAA;CACD,EAAA,CAAA;AAEN"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChallengeRegisterButton.js","names":[],"sources":["../../../src/components/ChallengeRegisterButton/ChallengeRegisterButton.tsx"],"sourcesContent":["import {\n useGetCurrentUserProfile,\n useGetEntityChallenge,\n useGetIsUserMemberOfTeam,\n useGetUserSubmissionTeams,\n} from '@/synapse-queries'\nimport React from 'react'\nimport { SynapseClientError, useSynapseContext } from '@/utils'\nimport ExitToAppIcon from '@mui/icons-material/ExitToApp'\nimport PendingActionsIcon from '@mui/icons-material/PendingActions'\nimport { Box } from '@mui/material'\nimport { useEffect } from 'react'\nimport SpinnerButton from '../SpinnerButton/SpinnerButton'\n\nexport interface ChallengeRegisterButtonProps {\n projectId: string\n onError?: (error: SynapseClientError) => void\n onJoinClick?: () => void\n onLeaveClick?: () => void\n}\n\nconst ChallengeRegisterButton = ({\n projectId,\n onError,\n onJoinClick,\n onLeaveClick,\n}: ChallengeRegisterButtonProps): React.ReactNode => {\n const { isAuthenticated } = useSynapseContext()\n const { data: userProfile } = useGetCurrentUserProfile({\n enabled: isAuthenticated,\n })\n\n const {\n data: challenge,\n isLoading: isLoadingChallenge,\n error: getChallengeError,\n } = useGetEntityChallenge(projectId, {\n enabled: isAuthenticated,\n })\n\n // Verify that user is a member of the participant team\n const {\n data: teamMembership,\n isLoading: isLoadingTeamMembership,\n error: getTeamMembershipError,\n } = useGetIsUserMemberOfTeam(\n challenge?.participantTeamId!,\n userProfile?.ownerId!,\n {\n enabled: !!challenge && !!userProfile,\n },\n )\n\n const isRegistered = Boolean(teamMembership)\n\n const {\n data: userSubmissionTeams,\n error: getSubmissionTeamsError,\n isLoading: isLoadingSubmissionTeams,\n } = useGetUserSubmissionTeams(challenge?.id!, 20, 0, {\n enabled: !!challenge && isAuthenticated,\n })\n\n const hasSubmissionTeam =\n userSubmissionTeams && userSubmissionTeams.results.length > 0\n const isMemberOfBothParticipantAndSubmissionTeams =\n isRegistered && hasSubmissionTeam\n const isMemberOfParticipantTeamOnly = isRegistered && !hasSubmissionTeam\n\n const error =\n getChallengeError || getTeamMembershipError || getSubmissionTeamsError\n\n useEffect(() => {\n if (error && onError) onError(error)\n }, [error, onError])\n\n const isLoading =\n isLoadingChallenge || isLoadingTeamMembership || isLoadingSubmissionTeams\n\n if (isLoading) {\n return <SpinnerButton showSpinner>Loading...</SpinnerButton>\n }\n\n return (\n <Box>\n {!isMemberOfBothParticipantAndSubmissionTeams &&\n !isMemberOfParticipantTeamOnly && (\n <SpinnerButton\n disableElevation={true}\n variant=\"contained\"\n onClick={() =>\n isAuthenticated && onJoinClick ? onJoinClick() : undefined\n }\n sx={{\n color: 'white',\n backgroundColor: '#109488',\n fontSize: '1.12em',\n textTransform: 'none',\n padding: '4px 18px',\n fontWeight: 400,\n ':hover': { color: 'white', backgroundColor: '#109488' },\n ':active': { color: 'white', backgroundColor: '#109488' },\n ':visited': { color: 'white', backgroundColor: '#109488' },\n }}\n >\n Register for this Challenge\n </SpinnerButton>\n )}\n {isMemberOfParticipantTeamOnly && (\n <SpinnerButton\n disableElevation={true}\n variant=\"contained\"\n endIcon={<PendingActionsIcon />}\n onClick={() =>\n isAuthenticated && onJoinClick ? onJoinClick() : undefined\n }\n sx={{\n color: '#4A2E1B',\n backgroundColor: '#FFD486',\n fontSize: '1.12em',\n textTransform: 'none',\n padding: '4px 18px',\n fontWeight: 400,\n ':hover': { color: '#4A2E1B', backgroundColor: '#FFD486' },\n ':active': { color: '#4A2E1B', backgroundColor: '#FFD486' },\n ':visited': { color: '#4A2E1B', backgroundColor: '#FFD486' },\n }}\n >\n Complete Registration\n </SpinnerButton>\n )}\n {isMemberOfBothParticipantAndSubmissionTeams && (\n <SpinnerButton\n disableElevation={true}\n variant=\"outlined\"\n endIcon={<ExitToAppIcon />}\n onClick={() => (onLeaveClick ? onLeaveClick() : undefined)}\n sx={{\n borderColor: 'white',\n color: 'white',\n fontSize: '1.12em',\n textTransform: 'none',\n padding: '4px 18px',\n fontWeight: 400,\n ':hover': {\n color: '#172430',\n borderColor: '#172430',\n },\n }}\n >\n Leave Challenge\n </SpinnerButton>\n )}\n </Box>\n )\n}\n\nexport default ChallengeRegisterButton\n"],"mappings":";;;;;;;;;;;;;;AAqBA,IAAM,KAA2B,EAC/B,cACA,YACA,gBACA,sBACmD;CACnD,IAAM,EAAE,uBAAoB,GAAmB,EACzC,EAAE,MAAM,MAAgB,EAAyB,EACrD,SAAS,GACV,CAAC,EAEI,EACJ,MAAM,GACN,WAAW,GACX,OAAO,MACL,EAAsB,GAAW,EACnC,SAAS,GACV,CAAC,EAGI,EACJ,MAAM,GACN,WAAW,GACX,OAAO,MACL,EACF,GAAW,mBACX,GAAa,SACb,EACE,SAAS,CAAC,CAAC,KAAa,CAAC,CAAC,GAC3B,CACF,EAEK,IAAe,EAAQ,GAEvB,EACJ,MAAM,GACN,OAAO,GACP,WAAW,MACT,EAA0B,GAAW,IAAK,IAAI,GAAG,EACnD,SAAS,CAAC,CAAC,KAAa,GACzB,CAAC,EAEI,IACJ,KAAuB,EAAoB,QAAQ,SAAS,GACxD,IACJ,KAAgB,GACZ,IAAgC,KAAgB,CAAC,GAEjD,IACJ,KAAqB,KAA0B;AAajD,QAXA,QAAgB;AACd,EAAI,KAAS,KAAS,EAAQ,EAAM;IACnC,CAAC,GAAO,EAAQ,CAAC,EAGlB,KAAsB,KAA2B,IAG1C,kBAAC,GAAD;EAAe,aAAA;YAAY;EAA0B,CAAA,GAI5D,kBAAC,GAAD,EAAA,UAAA;EACG,CAAC,KACA,CAAC,KACC,kBAAC,GAAD;GACE,kBAAkB;GAClB,SAAQ;GACR,eACE,KAAmB,IAAc,GAAa,GAAG,KAAA;GAEnD,IAAI;IACF,OAAO;IACP,iBAAiB;IACjB,UAAU;IACV,eAAe;IACf,SAAS;IACT,YAAY;IACZ,UAAU;KAAE,OAAO;KAAS,iBAAiB;KAAW;IACxD,WAAW;KAAE,OAAO;KAAS,iBAAiB;KAAW;IACzD,YAAY;KAAE,OAAO;KAAS,iBAAiB;KAAW;IAC3D;aACF;GAEe,CAAA;EAEnB,KACC,kBAAC,GAAD;GACE,kBAAkB;GAClB,SAAQ;GACR,SAAS,kBAAC,GAAD,EAAsB,CAAA;GAC/B,eACE,KAAmB,IAAc,GAAa,GAAG,KAAA;GAEnD,IAAI;IACF,OAAO;IACP,iBAAiB;IACjB,UAAU;IACV,eAAe;IACf,SAAS;IACT,YAAY;IACZ,UAAU;KAAE,OAAO;KAAW,iBAAiB;KAAW;IAC1D,WAAW;KAAE,OAAO;KAAW,iBAAiB;KAAW;IAC3D,YAAY;KAAE,OAAO;KAAW,iBAAiB;KAAW;IAC7D;aACF;GAEe,CAAA;EAEjB,KACC,kBAAC,GAAD;GACE,kBAAkB;GAClB,SAAQ;GACR,SAAS,kBAAC,GAAD,EAAiB,CAAA;GAC1B,eAAgB,IAAe,GAAc,GAAG,KAAA;GAChD,IAAI;IACF,aAAa;IACb,OAAO;IACP,UAAU;IACV,eAAe;IACf,SAAS;IACT,YAAY;IACZ,UAAU;KACR,OAAO;KACP,aAAa;KACd;IACF;aACF;GAEe,CAAA;EAEd,EAAA,CAAA"}
1
+ {"version":3,"file":"ChallengeRegisterButton.js","names":[],"sources":["../../../src/components/ChallengeRegisterButton/ChallengeRegisterButton.tsx"],"sourcesContent":["import {\n useGetCurrentUserProfile,\n useGetEntityChallenge,\n useGetIsUserMemberOfTeam,\n useGetUserSubmissionTeams,\n} from '@/synapse-queries'\nimport React from 'react'\nimport { SynapseClientError, useSynapseContext } from '@/utils'\nimport ExitToAppIcon from '@mui/icons-material/ExitToApp'\nimport PendingActionsIcon from '@mui/icons-material/PendingActions'\nimport { Box } from '@mui/material'\nimport { useEffect } from 'react'\nimport SpinnerButton from '../SpinnerButton/SpinnerButton'\n\nexport interface ChallengeRegisterButtonProps {\n projectId: string\n onError?: (error: SynapseClientError) => void\n onJoinClick?: () => void\n onLeaveClick?: () => void\n}\n\nconst ChallengeRegisterButton = ({\n projectId,\n onError,\n onJoinClick,\n onLeaveClick,\n}: ChallengeRegisterButtonProps): React.ReactNode => {\n const { isAuthenticated } = useSynapseContext()\n const { data: userProfile } = useGetCurrentUserProfile({\n enabled: isAuthenticated,\n })\n\n const {\n data: challenge,\n isLoading: isLoadingChallenge,\n error: getChallengeError,\n } = useGetEntityChallenge(projectId, {\n enabled: isAuthenticated,\n })\n\n // Verify that user is a member of the participant team\n const {\n data: teamMembership,\n isLoading: isLoadingTeamMembership,\n error: getTeamMembershipError,\n } = useGetIsUserMemberOfTeam(\n challenge?.participantTeamId!,\n userProfile?.ownerId!,\n {\n enabled: !!challenge && !!userProfile,\n },\n )\n\n const isRegistered = Boolean(teamMembership)\n\n const {\n data: userSubmissionTeams,\n error: getSubmissionTeamsError,\n isLoading: isLoadingSubmissionTeams,\n } = useGetUserSubmissionTeams(challenge?.id!, 20, 0, {\n enabled: !!challenge && isAuthenticated,\n })\n\n const hasSubmissionTeam =\n userSubmissionTeams && userSubmissionTeams.results.length > 0\n const isMemberOfBothParticipantAndSubmissionTeams =\n isRegistered && hasSubmissionTeam\n const isMemberOfParticipantTeamOnly = isRegistered && !hasSubmissionTeam\n\n const error =\n getChallengeError || getTeamMembershipError || getSubmissionTeamsError\n\n useEffect(() => {\n if (error && onError) onError(error)\n }, [error, onError])\n\n const isLoading =\n isLoadingChallenge || isLoadingTeamMembership || isLoadingSubmissionTeams\n\n if (isLoading) {\n return <SpinnerButton showSpinner>Loading...</SpinnerButton>\n }\n\n return (\n <Box>\n {!isMemberOfBothParticipantAndSubmissionTeams &&\n !isMemberOfParticipantTeamOnly && (\n <SpinnerButton\n disableElevation={true}\n variant=\"contained\"\n onClick={() =>\n isAuthenticated && onJoinClick ? onJoinClick() : undefined\n }\n sx={{\n color: 'white',\n backgroundColor: '#109488',\n fontSize: '1.12em',\n textTransform: 'none',\n padding: '4px 18px',\n fontWeight: 400,\n ':hover': { color: 'white', backgroundColor: '#109488' },\n ':active': { color: 'white', backgroundColor: '#109488' },\n ':visited': { color: 'white', backgroundColor: '#109488' },\n }}\n >\n Register for this Challenge\n </SpinnerButton>\n )}\n {isMemberOfParticipantTeamOnly && (\n <SpinnerButton\n disableElevation={true}\n variant=\"contained\"\n endIcon={<PendingActionsIcon />}\n onClick={() =>\n isAuthenticated && onJoinClick ? onJoinClick() : undefined\n }\n sx={{\n color: '#4A2E1B',\n backgroundColor: '#FFD486',\n fontSize: '1.12em',\n textTransform: 'none',\n padding: '4px 18px',\n fontWeight: 400,\n ':hover': { color: '#4A2E1B', backgroundColor: '#FFD486' },\n ':active': { color: '#4A2E1B', backgroundColor: '#FFD486' },\n ':visited': { color: '#4A2E1B', backgroundColor: '#FFD486' },\n }}\n >\n Complete Registration\n </SpinnerButton>\n )}\n {isMemberOfBothParticipantAndSubmissionTeams && (\n <SpinnerButton\n disableElevation={true}\n variant=\"outlined\"\n endIcon={<ExitToAppIcon />}\n onClick={() => (onLeaveClick ? onLeaveClick() : undefined)}\n sx={{\n borderColor: 'white',\n color: 'white',\n fontSize: '1.12em',\n textTransform: 'none',\n padding: '4px 18px',\n fontWeight: 400,\n ':hover': {\n color: '#172430',\n borderColor: '#172430',\n },\n }}\n >\n Leave Challenge\n </SpinnerButton>\n )}\n </Box>\n )\n}\n\nexport default ChallengeRegisterButton\n"],"mappings":";;;;;;;;;;;;;;AAqBA,IAAM,KAA2B,EAC/B,cACA,YACA,gBACA,sBACmD;CACnD,IAAM,EAAE,uBAAoB,EAAkB,GACxC,EAAE,MAAM,MAAgB,EAAyB,EACrD,SAAS,EACX,CAAC,GAEK,EACJ,MAAM,GACN,WAAW,GACX,OAAO,MACL,EAAsB,GAAW,EACnC,SAAS,EACX,CAAC,GAGK,EACJ,MAAM,GACN,WAAW,GACX,OAAO,MACL,EACF,GAAW,mBACX,GAAa,SACb,EACE,SAAS,CAAC,CAAC,KAAa,CAAC,CAAC,EAC5B,CACF,GAEM,IAAe,EAAQ,GAEvB,EACJ,MAAM,GACN,OAAO,GACP,WAAW,MACT,EAA0B,GAAW,IAAK,IAAI,GAAG,EACnD,SAAS,CAAC,CAAC,KAAa,EAC1B,CAAC,GAEK,IACJ,KAAuB,EAAoB,QAAQ,SAAS,GACxD,IACJ,KAAgB,GACZ,IAAgC,KAAgB,CAAC,GAEjD,IACJ,KAAqB,KAA0B;CAajD,OAXA,QAAgB;EACd,AAAI,KAAS,KAAS,EAAQ,CAAK;CACrC,GAAG,CAAC,GAAO,CAAO,CAAC,GAGjB,KAAsB,KAA2B,IAG1C,kBAAC,GAAD;EAAe,aAAA;YAAY;CAAyB,CAAA,IAI3D,kBAAC,GAAD,EAAA,UAAA;EACG,CAAC,KACA,CAAC,KACC,kBAAC,GAAD;GACE,kBAAkB;GAClB,SAAQ;GACR,eACE,KAAmB,IAAc,EAAY,IAAI,KAAA;GAEnD,IAAI;IACF,OAAO;IACP,iBAAiB;IACjB,UAAU;IACV,eAAe;IACf,SAAS;IACT,YAAY;IACZ,UAAU;KAAE,OAAO;KAAS,iBAAiB;IAAU;IACvD,WAAW;KAAE,OAAO;KAAS,iBAAiB;IAAU;IACxD,YAAY;KAAE,OAAO;KAAS,iBAAiB;IAAU;GAC3D;aACD;EAEc,CAAA;EAElB,KACC,kBAAC,GAAD;GACE,kBAAkB;GAClB,SAAQ;GACR,SAAS,kBAAC,GAAD,CAAqB,CAAA;GAC9B,eACE,KAAmB,IAAc,EAAY,IAAI,KAAA;GAEnD,IAAI;IACF,OAAO;IACP,iBAAiB;IACjB,UAAU;IACV,eAAe;IACf,SAAS;IACT,YAAY;IACZ,UAAU;KAAE,OAAO;KAAW,iBAAiB;IAAU;IACzD,WAAW;KAAE,OAAO;KAAW,iBAAiB;IAAU;IAC1D,YAAY;KAAE,OAAO;KAAW,iBAAiB;IAAU;GAC7D;aACD;EAEc,CAAA;EAEhB,KACC,kBAAC,GAAD;GACE,kBAAkB;GAClB,SAAQ;GACR,SAAS,kBAAC,GAAD,CAAgB,CAAA;GACzB,eAAgB,IAAe,EAAa,IAAI,KAAA;GAChD,IAAI;IACF,aAAa;IACb,OAAO;IACP,UAAU;IACV,eAAe;IACf,SAAS;IACT,YAAY;IACZ,UAAU;KACR,OAAO;KACP,aAAa;IACf;GACF;aACD;EAEc,CAAA;CAEd,EAAA,CAAA;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChallengeRequirementsModal.js","names":[],"sources":["../../../src/components/ChallengeRequirementsModal/ChallengeRequirementsModal.tsx"],"sourcesContent":["import {\n useGetAccessRequirementsForTeam,\n useGetAccessRequirementStatuses,\n useGetCurrentUserProfile,\n useGetEntity,\n useGetEntityChallenge,\n} from '@/synapse-queries'\nimport {\n useAddMemberToTeam,\n useGetMembershipStatus,\n} from '@/synapse-queries/team/useTeamMembers'\nimport { SynapseClientError, useSynapseContext } from '@/utils'\nimport { Alert, Button, Typography } from '@mui/material'\nimport { RestrictableObjectType } from '@sage-bionetworks/synapse-types'\nimport { isEmpty } from 'lodash-es'\nimport { useCallback } from 'react'\nimport AccessRequirementList from '../AccessRequirementList/AccessRequirementList'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\n\nexport type ChallengeRequirementsModalProps = {\n open: boolean\n projectId: string\n onCancel: () => void\n onRegisterComplete: () => void\n}\n\n/**\n * The challenge requirements modal will\n * 1. Display the access requirements that must be accepted to join a participant team. The component will guide the user through meeting the requirements.\n * 2. If the user has accepted the requirements, the user can click 'Register' to join the team\n * If the user has not accepted the requirements, the user cannot register for the challenge.\n */\nexport default function ChallengeRequirementsModal(\n props: ChallengeRequirementsModalProps,\n) {\n const { open, projectId, onRegisterComplete, onCancel } = props\n const { data: project, error: getEntityError } = useGetEntity(projectId)\n\n const { isAuthenticated } = useSynapseContext()\n\n const { data: challenge, error: getChallengeError } =\n useGetEntityChallenge(projectId)\n const { data: userProfile, error: getProfileError } =\n useGetCurrentUserProfile({\n enabled: isAuthenticated,\n })\n\n const participantTeamId = challenge?.participantTeamId\n const userId = userProfile?.ownerId\n\n const { data: teamMembershipStatus, error: getMembershipStatusError } =\n useGetMembershipStatus(participantTeamId!, userId!, {\n enabled: Boolean(participantTeamId && userId),\n })\n\n const {\n mutateAsync: addTeamMember,\n isPending: registrationIsPending,\n error: registrationError,\n } = useAddMemberToTeam()\n\n const {\n data: fetchedRequirementsForTeam,\n isSuccess: hasFetchedRequirements,\n error: getAccessRequirementsError,\n } = useGetAccessRequirementsForTeam(challenge?.participantTeamId!, {\n enabled: Boolean(challenge?.participantTeamId),\n })\n\n const requirementStatusesQueryResults = useGetAccessRequirementStatuses(\n fetchedRequirementsForTeam?.map(ar => String(ar.id)) ?? [],\n )\n\n const meetsAllRequirements =\n hasFetchedRequirements &&\n requirementStatusesQueryResults.every(queryResult => {\n return queryResult.status === 'success' && queryResult.data.isApproved\n })\n\n const registerForChallenge = useCallback(async () => {\n if (participantTeamId && userId && !teamMembershipStatus?.isMember) {\n await addTeamMember({\n teamId: participantTeamId,\n userId,\n })\n }\n onRegisterComplete()\n }, [\n addTeamMember,\n onRegisterComplete,\n participantTeamId,\n teamMembershipStatus?.isMember,\n userId,\n ])\n\n const errors = [\n getEntityError,\n getChallengeError,\n getProfileError,\n getMembershipStatusError,\n getAccessRequirementsError,\n registrationError,\n ].filter((e): e is SynapseClientError => Boolean(e))\n\n // It's possible that the user joined the team, but requirements on the team changed since they became a member\n // They do not need to re-join the team, but they should still be prompted to accept the requirements\n let registerButtonText = 'Next Step'\n if (registrationIsPending) {\n registerButtonText = 'Registering...'\n }\n\n if (!isEmpty(errors)) {\n return (\n <Alert severity=\"error\">\n {errors.map((e, index) => (\n <Typography variant={'body1'} key={index}>\n {e.reason}\n </Typography>\n ))}\n </Alert>\n )\n }\n\n if (!participantTeamId || !open) {\n return <></>\n }\n\n return (\n <AccessRequirementList\n dialogTitle={`Challenge Registration (Step 1 of 2): Terms and Conditions`}\n subjectId={participantTeamId}\n subjectType={RestrictableObjectType.TEAM}\n teamId={challenge?.participantTeamId}\n renderAsModal={true}\n requestObjectName={project?.name}\n onHide={() => {\n onCancel()\n }}\n customDialogActions={\n <>\n <Button variant={'outlined'} onClick={onCancel}>\n Cancel\n </Button>\n <Button\n variant={'contained'}\n onClick={() => {\n registerForChallenge()\n }}\n startIcon={registrationIsPending ? <SynapseSpinner /> : undefined}\n disabled={!meetsAllRequirements || registrationIsPending}\n >\n {registerButtonText}\n </Button>\n </>\n }\n />\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAgCA,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,SAAM,cAAW,uBAAoB,gBAAa,GACpD,EAAE,MAAM,GAAS,OAAO,MAAmB,EAAa,EAAU,EAElE,EAAE,uBAAoB,GAAmB,EAEzC,EAAE,MAAM,GAAW,OAAO,MAC9B,EAAsB,EAAU,EAC5B,EAAE,MAAM,GAAa,OAAO,MAChC,EAAyB,EACvB,SAAS,GACV,CAAC,EAEE,IAAoB,GAAW,mBAC/B,IAAS,GAAa,SAEtB,EAAE,MAAM,GAAsB,OAAO,MACzC,EAAuB,GAAoB,GAAS,EAClD,SAAS,GAAQ,KAAqB,IACvC,CAAC,EAEE,EACJ,aAAa,GACb,WAAW,GACX,OAAO,MACL,GAAoB,EAElB,EACJ,MAAM,GACN,WAAW,GACX,OAAO,MACL,EAAgC,GAAW,mBAAoB,EACjE,SAAS,EAAQ,GAAW,mBAC7B,CAAC,EAEI,IAAkC,EACtC,GAA4B,KAAI,MAAM,OAAO,EAAG,GAAG,CAAC,IAAI,EAAE,CAC3D,EAEK,IACJ,KACA,EAAgC,OAAM,MAC7B,EAAY,WAAW,aAAa,EAAY,KAAK,WAC5D,EAEE,IAAuB,EAAY,YAAY;AAOnD,EANI,KAAqB,KAAU,CAAC,GAAsB,YACxD,MAAM,EAAc;GAClB,QAAQ;GACR;GACD,CAAC,EAEJ,GAAoB;IACnB;EACD;EACA;EACA;EACA,GAAsB;EACtB;EACD,CAAC,EAEI,IAAS;EACb;EACA;EACA;EACA;EACA;EACA;EACD,CAAC,QAAQ,MAA+B,EAAQ,EAAG,EAIhD,IAAqB;AAqBzB,QApBI,MACF,IAAqB,mBAGlB,EAAQ,EAAO,GAYhB,CAAC,KAAqB,CAAC,IAClB,kBAAA,GAAA,EAAK,CAAA,GAIZ,kBAAC,GAAD;EACE,aAAa;EACb,WAAW;EACX,aAAa,EAAuB;EACpC,QAAQ,GAAW;EACnB,eAAe;EACf,mBAAmB,GAAS;EAC5B,cAAc;AACZ,MAAU;;EAEZ,qBACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;GAAQ,SAAS;GAAY,SAAS;aAAU;GAEvC,CAAA,EACT,kBAAC,GAAD;GACE,SAAS;GACT,eAAe;AACb,OAAsB;;GAExB,WAAW,IAAwB,kBAAC,GAAD,EAAkB,CAAA,GAAG,KAAA;GACxD,UAAU,CAAC,KAAwB;aAElC;GACM,CAAA,CACR,EAAA,CAAA;EAEL,CAAA,GA1CA,kBAAC,GAAD;EAAO,UAAS;YACb,EAAO,KAAK,GAAG,MACd,kBAAC,GAAD;GAAY,SAAS;aAClB,EAAE;GACQ,EAFsB,EAEtB,CACb;EACI,CAAA"}
1
+ {"version":3,"file":"ChallengeRequirementsModal.js","names":[],"sources":["../../../src/components/ChallengeRequirementsModal/ChallengeRequirementsModal.tsx"],"sourcesContent":["import {\n useGetAccessRequirementsForTeam,\n useGetAccessRequirementStatuses,\n useGetCurrentUserProfile,\n useGetEntity,\n useGetEntityChallenge,\n} from '@/synapse-queries'\nimport {\n useAddMemberToTeam,\n useGetMembershipStatus,\n} from '@/synapse-queries/team/useTeamMembers'\nimport { SynapseClientError, useSynapseContext } from '@/utils'\nimport { Alert, Button, Typography } from '@mui/material'\nimport { RestrictableObjectType } from '@sage-bionetworks/synapse-types'\nimport { isEmpty } from 'lodash-es'\nimport { useCallback } from 'react'\nimport AccessRequirementList from '../AccessRequirementList/AccessRequirementList'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\n\nexport type ChallengeRequirementsModalProps = {\n open: boolean\n projectId: string\n onCancel: () => void\n onRegisterComplete: () => void\n}\n\n/**\n * The challenge requirements modal will\n * 1. Display the access requirements that must be accepted to join a participant team. The component will guide the user through meeting the requirements.\n * 2. If the user has accepted the requirements, the user can click 'Register' to join the team\n * If the user has not accepted the requirements, the user cannot register for the challenge.\n */\nexport default function ChallengeRequirementsModal(\n props: ChallengeRequirementsModalProps,\n) {\n const { open, projectId, onRegisterComplete, onCancel } = props\n const { data: project, error: getEntityError } = useGetEntity(projectId)\n\n const { isAuthenticated } = useSynapseContext()\n\n const { data: challenge, error: getChallengeError } =\n useGetEntityChallenge(projectId)\n const { data: userProfile, error: getProfileError } =\n useGetCurrentUserProfile({\n enabled: isAuthenticated,\n })\n\n const participantTeamId = challenge?.participantTeamId\n const userId = userProfile?.ownerId\n\n const { data: teamMembershipStatus, error: getMembershipStatusError } =\n useGetMembershipStatus(participantTeamId!, userId!, {\n enabled: Boolean(participantTeamId && userId),\n })\n\n const {\n mutateAsync: addTeamMember,\n isPending: registrationIsPending,\n error: registrationError,\n } = useAddMemberToTeam()\n\n const {\n data: fetchedRequirementsForTeam,\n isSuccess: hasFetchedRequirements,\n error: getAccessRequirementsError,\n } = useGetAccessRequirementsForTeam(challenge?.participantTeamId!, {\n enabled: Boolean(challenge?.participantTeamId),\n })\n\n const requirementStatusesQueryResults = useGetAccessRequirementStatuses(\n fetchedRequirementsForTeam?.map(ar => String(ar.id)) ?? [],\n )\n\n const meetsAllRequirements =\n hasFetchedRequirements &&\n requirementStatusesQueryResults.every(queryResult => {\n return queryResult.status === 'success' && queryResult.data.isApproved\n })\n\n const registerForChallenge = useCallback(async () => {\n if (participantTeamId && userId && !teamMembershipStatus?.isMember) {\n await addTeamMember({\n teamId: participantTeamId,\n userId,\n })\n }\n onRegisterComplete()\n }, [\n addTeamMember,\n onRegisterComplete,\n participantTeamId,\n teamMembershipStatus?.isMember,\n userId,\n ])\n\n const errors = [\n getEntityError,\n getChallengeError,\n getProfileError,\n getMembershipStatusError,\n getAccessRequirementsError,\n registrationError,\n ].filter((e): e is SynapseClientError => Boolean(e))\n\n // It's possible that the user joined the team, but requirements on the team changed since they became a member\n // They do not need to re-join the team, but they should still be prompted to accept the requirements\n let registerButtonText = 'Next Step'\n if (registrationIsPending) {\n registerButtonText = 'Registering...'\n }\n\n if (!isEmpty(errors)) {\n return (\n <Alert severity=\"error\">\n {errors.map((e, index) => (\n <Typography variant={'body1'} key={index}>\n {e.reason}\n </Typography>\n ))}\n </Alert>\n )\n }\n\n if (!participantTeamId || !open) {\n return <></>\n }\n\n return (\n <AccessRequirementList\n dialogTitle={`Challenge Registration (Step 1 of 2): Terms and Conditions`}\n subjectId={participantTeamId}\n subjectType={RestrictableObjectType.TEAM}\n teamId={challenge?.participantTeamId}\n renderAsModal={true}\n requestObjectName={project?.name}\n onHide={() => {\n onCancel()\n }}\n customDialogActions={\n <>\n <Button variant={'outlined'} onClick={onCancel}>\n Cancel\n </Button>\n <Button\n variant={'contained'}\n onClick={() => {\n registerForChallenge()\n }}\n startIcon={registrationIsPending ? <SynapseSpinner /> : undefined}\n disabled={!meetsAllRequirements || registrationIsPending}\n >\n {registerButtonText}\n </Button>\n </>\n }\n />\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAgCA,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,SAAM,cAAW,uBAAoB,gBAAa,GACpD,EAAE,MAAM,GAAS,OAAO,MAAmB,EAAa,CAAS,GAEjE,EAAE,uBAAoB,EAAkB,GAExC,EAAE,MAAM,GAAW,OAAO,MAC9B,EAAsB,CAAS,GAC3B,EAAE,MAAM,GAAa,OAAO,MAChC,EAAyB,EACvB,SAAS,EACX,CAAC,GAEG,IAAoB,GAAW,mBAC/B,IAAS,GAAa,SAEtB,EAAE,MAAM,GAAsB,OAAO,MACzC,EAAuB,GAAoB,GAAS,EAClD,SAAS,GAAQ,KAAqB,GACxC,CAAC,GAEG,EACJ,aAAa,GACb,WAAW,GACX,OAAO,MACL,EAAmB,GAEjB,EACJ,MAAM,GACN,WAAW,GACX,OAAO,MACL,EAAgC,GAAW,mBAAoB,EACjE,SAAS,EAAQ,GAAW,kBAC9B,CAAC,GAEK,IAAkC,EACtC,GAA4B,KAAI,MAAM,OAAO,EAAG,EAAE,CAAC,KAAK,CAAC,CAC3D,GAEM,IACJ,KACA,EAAgC,OAAM,MAC7B,EAAY,WAAW,aAAa,EAAY,KAAK,UAC7D,GAEG,IAAuB,EAAY,YAAY;EAOnD,AANI,KAAqB,KAAU,CAAC,GAAsB,YACxD,MAAM,EAAc;GAClB,QAAQ;GACR;EACF,CAAC,GAEH,EAAmB;CACrB,GAAG;EACD;EACA;EACA;EACA,GAAsB;EACtB;CACF,CAAC,GAEK,IAAS;EACb;EACA;EACA;EACA;EACA;EACA;CACF,EAAE,QAAQ,MAA+B,EAAQ,CAAE,GAI/C,IAAqB;CAqBzB,OApBI,MACF,IAAqB,mBAGlB,EAAQ,CAAM,IAYf,CAAC,KAAqB,CAAC,IAClB,kBAAA,GAAA,CAAI,CAAA,IAIX,kBAAC,GAAD;EACE,aAAa;EACb,WAAW;EACX,aAAa,EAAuB;EACpC,QAAQ,GAAW;EACnB,eAAe;EACf,mBAAmB,GAAS;EAC5B,cAAc;GACZ,EAAS;EACX;EACA,qBACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;GAAQ,SAAS;GAAY,SAAS;aAAU;EAExC,CAAA,GACR,kBAAC,GAAD;GACE,SAAS;GACT,eAAe;IACb,EAAqB;GACvB;GACA,WAAW,IAAwB,kBAAC,GAAD,CAAiB,CAAA,IAAI,KAAA;GACxD,UAAU,CAAC,KAAwB;aAElC;EACK,CAAA,CACR,EAAA,CAAA;CAEL,CAAA,IA1CC,kBAAC,GAAD;EAAO,UAAS;YACb,EAAO,KAAK,GAAG,MACd,kBAAC,GAAD;GAAY,SAAS;aAClB,EAAE;EACO,GAFuB,CAEvB,CACb;CACI,CAAA;AAsCb"}
@@ -1 +1 @@
1
- {"version":3,"file":"AddExternalRepo.js","names":[],"sources":["../../../src/components/ChallengeSubmission/AddExternalRepo.tsx"],"sourcesContent":["import { Alert, Box, TextField, Typography } from '@mui/material'\n\ntype AddExternalRepoProps = {\n repoName: string\n errorMessage?: string\n onRepoNameChange: (value: string) => void\n}\n\nfunction AddExternalRepo({\n errorMessage,\n repoName,\n onRepoNameChange,\n}: AddExternalRepoProps) {\n return (\n <>\n <Typography variant=\"body1\">Repository Name</Typography>\n <TextField\n id=\"repo\"\n name=\"repo\"\n fullWidth\n onChange={e => onRepoNameChange(e.target.value)}\n placeholder=\"ex. index.docker.io:500/library/ubuntu\"\n value={repoName}\n />\n {errorMessage && (\n <Box\n sx={{\n mt: 1,\n }}\n >\n <Alert severity=\"error\">{errorMessage}</Alert>\n </Box>\n )}\n </>\n )\n}\n\nexport default AddExternalRepo\n"],"mappings":";;;AAQA,SAAS,EAAgB,EACvB,iBACA,aACA,uBACuB;AACvB,QACE,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD;GAAY,SAAQ;aAAQ;GAA4B,CAAA;EACxD,kBAAC,GAAD;GACE,IAAG;GACH,MAAK;GACL,WAAA;GACA,WAAU,MAAK,EAAiB,EAAE,OAAO,MAAM;GAC/C,aAAY;GACZ,OAAO;GACP,CAAA;EACD,KACC,kBAAC,GAAD;GACE,IAAI,EACF,IAAI,GACL;aAED,kBAAC,GAAD;IAAO,UAAS;cAAS;IAAqB,CAAA;GAC1C,CAAA;EAEP,EAAA,CAAA"}
1
+ {"version":3,"file":"AddExternalRepo.js","names":[],"sources":["../../../src/components/ChallengeSubmission/AddExternalRepo.tsx"],"sourcesContent":["import { Alert, Box, TextField, Typography } from '@mui/material'\n\ntype AddExternalRepoProps = {\n repoName: string\n errorMessage?: string\n onRepoNameChange: (value: string) => void\n}\n\nfunction AddExternalRepo({\n errorMessage,\n repoName,\n onRepoNameChange,\n}: AddExternalRepoProps) {\n return (\n <>\n <Typography variant=\"body1\">Repository Name</Typography>\n <TextField\n id=\"repo\"\n name=\"repo\"\n fullWidth\n onChange={e => onRepoNameChange(e.target.value)}\n placeholder=\"ex. index.docker.io:500/library/ubuntu\"\n value={repoName}\n />\n {errorMessage && (\n <Box\n sx={{\n mt: 1,\n }}\n >\n <Alert severity=\"error\">{errorMessage}</Alert>\n </Box>\n )}\n </>\n )\n}\n\nexport default AddExternalRepo\n"],"mappings":";;;AAQA,SAAS,EAAgB,EACvB,iBACA,aACA,uBACuB;CACvB,OACE,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD;GAAY,SAAQ;aAAQ;EAA2B,CAAA;EACvD,kBAAC,GAAD;GACE,IAAG;GACH,MAAK;GACL,WAAA;GACA,WAAU,MAAK,EAAiB,EAAE,OAAO,KAAK;GAC9C,aAAY;GACZ,OAAO;EACR,CAAA;EACA,KACC,kBAAC,GAAD;GACE,IAAI,EACF,IAAI,EACN;aAEA,kBAAC,GAAD;IAAO,UAAS;cAAS;GAAoB,CAAA;EAC1C,CAAA;CAEP,EAAA,CAAA;AAEN"}
@@ -1 +1 @@
1
- {"version":3,"file":"AvailableEvaluationQueueList.js","names":[],"sources":["../../../src/components/ChallengeSubmission/AvailableEvaluationQueueList.tsx"],"sourcesContent":["import LightTooltip from '@/components/styled/LightTooltip'\nimport { HelpOutlineTwoTone } from '@mui/icons-material'\nimport {\n Autocomplete,\n Box,\n Button,\n Collapse,\n List,\n ListItem,\n MenuItem,\n TextField,\n Typography,\n} from '@mui/material'\nimport { Evaluation } from '@sage-bionetworks/synapse-types'\nimport { noop } from 'lodash-es'\nimport { useEffect, useState } from 'react'\nimport MarkdownSynapse from '../Markdown/MarkdownSynapse'\n\ntype TextWithHelpIconProps = {\n text: string\n tooltipMarkdownText?: string\n}\n\nfunction TextWithHelpIcon(props: TextWithHelpIconProps) {\n const { text, tooltipMarkdownText } = props\n\n return (\n <>\n {text}\n {tooltipMarkdownText && (\n <LightTooltip\n title={\n <Typography\n variant=\"body1\"\n sx={{\n mb: 0,\n }}\n >\n <MarkdownSynapse markdown={tooltipMarkdownText} />\n </Typography>\n }\n >\n <HelpOutlineTwoTone\n sx={{\n ml: 1,\n color: 'grey.600',\n fontSize: '16px',\n }}\n />\n </LightTooltip>\n )}\n </>\n )\n}\n\ntype AvailableEvaluationQueueStaticListProps = Pick<\n AvailableEvaluationQueueListProps,\n 'evaluations'\n>\nfunction AvailableEvaluationQueueStaticList(\n props: AvailableEvaluationQueueStaticListProps,\n) {\n const { evaluations } = props\n return (\n <>\n <Typography variant=\"body1\">Available Evaluation Queues:</Typography>\n <List dense={true}>\n {evaluations.map(evaluation => (\n <ListItem key={evaluation.id}>\n <TextWithHelpIcon\n text={evaluation.name!}\n tooltipMarkdownText={evaluation.submissionInstructionsMessage}\n />\n </ListItem>\n ))}\n </List>\n </>\n )\n}\n\ntype AvailableEvaluationQueueCollapsableListProps = Pick<\n AvailableEvaluationQueueListProps,\n 'evaluations' | 'isSelectable'\n>\n\nfunction AvailableEvaluationQueueCollapsableList(\n props: AvailableEvaluationQueueCollapsableListProps,\n) {\n const { evaluations, isSelectable } = props\n const [showList, setShowList] = useState<boolean>(false)\n const nEvaluationsCollapseLimit = isSelectable ? 2 : 8\n const shouldCollapse = evaluations.length >= nEvaluationsCollapseLimit\n\n return (\n <Box\n sx={{\n mt: 2,\n }}\n >\n {shouldCollapse ? (\n <>\n <Button\n variant=\"contained\"\n sx={{ mb: 1 }}\n onClick={() => setShowList(!showList)}\n >\n {`${showList ? 'Hide' : 'Show'} All Available Evaluation Queues`}\n </Button>\n <Collapse in={showList}>\n <AvailableEvaluationQueueStaticList {...props} />\n </Collapse>\n </>\n ) : (\n <>\n <AvailableEvaluationQueueStaticList {...props} />\n </>\n )}\n </Box>\n )\n}\n\ntype AvailableEvaluationQueueAutocompleteListProps = Pick<\n AvailableEvaluationQueueListProps,\n 'evaluations' | 'onChangeSelectedEvaluation'\n>\n\nfunction AvailableEvaluationQueueAutocompleteList(\n props: AvailableEvaluationQueueAutocompleteListProps,\n) {\n const { evaluations, onChangeSelectedEvaluation = noop } = props\n const [value, setValue] = useState<Evaluation | null>(null)\n\n return (\n <Autocomplete\n // Must be set to false for dropdown list to be correctly positioned\n // when component is in a modal opened from a Markdown Widget in SWC\n disablePortal={false}\n value={value}\n onChange={(event, newValue: Evaluation | null) => {\n setValue(newValue)\n onChangeSelectedEvaluation(newValue)\n }}\n options={evaluations}\n getOptionLabel={option => option.name!}\n renderOption={(props, option, state, ownerState) => {\n return (\n <MenuItem {...props}>\n <TextWithHelpIcon\n text={ownerState.getOptionLabel(option)}\n tooltipMarkdownText={option.submissionInstructionsMessage}\n />\n </MenuItem>\n )\n }}\n renderInput={params => (\n <TextField {...params} label=\"Selected Evaluation Queue\" />\n )}\n />\n )\n}\n\nexport type AvailableEvaluationQueueListProps = {\n /* evaluation queues available to the current user */\n evaluations: Evaluation[]\n /* should the user be able to select an evaluation queue */\n isSelectable?: boolean\n /* will be called when the currently selected evaluation queue is changed */\n onChangeSelectedEvaluation?: (evaluation: Evaluation | null) => void\n}\n\nfunction AvailableEvaluationQueueList(\n props: AvailableEvaluationQueueListProps,\n) {\n const {\n isSelectable = true,\n onChangeSelectedEvaluation = noop,\n evaluations,\n } = props\n const nEvaluations = evaluations.length\n\n useEffect(() => {\n if (nEvaluations === 1 && isSelectable)\n onChangeSelectedEvaluation(evaluations[0])\n }, [evaluations, isSelectable, nEvaluations, onChangeSelectedEvaluation])\n\n if (nEvaluations === 0)\n return <Typography variant=\"body1\">No evaluations found</Typography>\n\n if (nEvaluations === 1) {\n const evaluation = evaluations[0]\n return (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n }}\n >\n <TextWithHelpIcon\n text={evaluation.name!}\n tooltipMarkdownText={evaluation.submissionInstructionsMessage}\n />\n </Box>\n )\n }\n\n return (\n <Box\n // Class name used in SWC to prevent markdown formatting from applying additional margin/padding\n className=\"AvailableEvaluationQueueList\"\n >\n {isSelectable && <AvailableEvaluationQueueAutocompleteList {...props} />}\n <AvailableEvaluationQueueCollapsableList {...props} />\n </Box>\n )\n}\n\nexport default AvailableEvaluationQueueList\n"],"mappings":"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"}
1
+ {"version":3,"file":"AvailableEvaluationQueueList.js","names":[],"sources":["../../../src/components/ChallengeSubmission/AvailableEvaluationQueueList.tsx"],"sourcesContent":["import LightTooltip from '@/components/styled/LightTooltip'\nimport { HelpOutlineTwoTone } from '@mui/icons-material'\nimport {\n Autocomplete,\n Box,\n Button,\n Collapse,\n List,\n ListItem,\n MenuItem,\n TextField,\n Typography,\n} from '@mui/material'\nimport { Evaluation } from '@sage-bionetworks/synapse-types'\nimport { noop } from 'lodash-es'\nimport { useEffect, useState } from 'react'\nimport MarkdownSynapse from '../Markdown/MarkdownSynapse'\n\ntype TextWithHelpIconProps = {\n text: string\n tooltipMarkdownText?: string\n}\n\nfunction TextWithHelpIcon(props: TextWithHelpIconProps) {\n const { text, tooltipMarkdownText } = props\n\n return (\n <>\n {text}\n {tooltipMarkdownText && (\n <LightTooltip\n title={\n <Typography\n variant=\"body1\"\n sx={{\n mb: 0,\n }}\n >\n <MarkdownSynapse markdown={tooltipMarkdownText} />\n </Typography>\n }\n >\n <HelpOutlineTwoTone\n sx={{\n ml: 1,\n color: 'grey.600',\n fontSize: '16px',\n }}\n />\n </LightTooltip>\n )}\n </>\n )\n}\n\ntype AvailableEvaluationQueueStaticListProps = Pick<\n AvailableEvaluationQueueListProps,\n 'evaluations'\n>\nfunction AvailableEvaluationQueueStaticList(\n props: AvailableEvaluationQueueStaticListProps,\n) {\n const { evaluations } = props\n return (\n <>\n <Typography variant=\"body1\">Available Evaluation Queues:</Typography>\n <List dense={true}>\n {evaluations.map(evaluation => (\n <ListItem key={evaluation.id}>\n <TextWithHelpIcon\n text={evaluation.name!}\n tooltipMarkdownText={evaluation.submissionInstructionsMessage}\n />\n </ListItem>\n ))}\n </List>\n </>\n )\n}\n\ntype AvailableEvaluationQueueCollapsableListProps = Pick<\n AvailableEvaluationQueueListProps,\n 'evaluations' | 'isSelectable'\n>\n\nfunction AvailableEvaluationQueueCollapsableList(\n props: AvailableEvaluationQueueCollapsableListProps,\n) {\n const { evaluations, isSelectable } = props\n const [showList, setShowList] = useState<boolean>(false)\n const nEvaluationsCollapseLimit = isSelectable ? 2 : 8\n const shouldCollapse = evaluations.length >= nEvaluationsCollapseLimit\n\n return (\n <Box\n sx={{\n mt: 2,\n }}\n >\n {shouldCollapse ? (\n <>\n <Button\n variant=\"contained\"\n sx={{ mb: 1 }}\n onClick={() => setShowList(!showList)}\n >\n {`${showList ? 'Hide' : 'Show'} All Available Evaluation Queues`}\n </Button>\n <Collapse in={showList}>\n <AvailableEvaluationQueueStaticList {...props} />\n </Collapse>\n </>\n ) : (\n <>\n <AvailableEvaluationQueueStaticList {...props} />\n </>\n )}\n </Box>\n )\n}\n\ntype AvailableEvaluationQueueAutocompleteListProps = Pick<\n AvailableEvaluationQueueListProps,\n 'evaluations' | 'onChangeSelectedEvaluation'\n>\n\nfunction AvailableEvaluationQueueAutocompleteList(\n props: AvailableEvaluationQueueAutocompleteListProps,\n) {\n const { evaluations, onChangeSelectedEvaluation = noop } = props\n const [value, setValue] = useState<Evaluation | null>(null)\n\n return (\n <Autocomplete\n // Must be set to false for dropdown list to be correctly positioned\n // when component is in a modal opened from a Markdown Widget in SWC\n disablePortal={false}\n value={value}\n onChange={(event, newValue: Evaluation | null) => {\n setValue(newValue)\n onChangeSelectedEvaluation(newValue)\n }}\n options={evaluations}\n getOptionLabel={option => option.name!}\n renderOption={(props, option, state, ownerState) => {\n return (\n <MenuItem {...props}>\n <TextWithHelpIcon\n text={ownerState.getOptionLabel(option)}\n tooltipMarkdownText={option.submissionInstructionsMessage}\n />\n </MenuItem>\n )\n }}\n renderInput={params => (\n <TextField {...params} label=\"Selected Evaluation Queue\" />\n )}\n />\n )\n}\n\nexport type AvailableEvaluationQueueListProps = {\n /* evaluation queues available to the current user */\n evaluations: Evaluation[]\n /* should the user be able to select an evaluation queue */\n isSelectable?: boolean\n /* will be called when the currently selected evaluation queue is changed */\n onChangeSelectedEvaluation?: (evaluation: Evaluation | null) => void\n}\n\nfunction AvailableEvaluationQueueList(\n props: AvailableEvaluationQueueListProps,\n) {\n const {\n isSelectable = true,\n onChangeSelectedEvaluation = noop,\n evaluations,\n } = props\n const nEvaluations = evaluations.length\n\n useEffect(() => {\n if (nEvaluations === 1 && isSelectable)\n onChangeSelectedEvaluation(evaluations[0])\n }, [evaluations, isSelectable, nEvaluations, onChangeSelectedEvaluation])\n\n if (nEvaluations === 0)\n return <Typography variant=\"body1\">No evaluations found</Typography>\n\n if (nEvaluations === 1) {\n const evaluation = evaluations[0]\n return (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n }}\n >\n <TextWithHelpIcon\n text={evaluation.name!}\n tooltipMarkdownText={evaluation.submissionInstructionsMessage}\n />\n </Box>\n )\n }\n\n return (\n <Box\n // Class name used in SWC to prevent markdown formatting from applying additional margin/padding\n className=\"AvailableEvaluationQueueList\"\n >\n {isSelectable && <AvailableEvaluationQueueAutocompleteList {...props} />}\n <AvailableEvaluationQueueCollapsableList {...props} />\n </Box>\n )\n}\n\nexport default AvailableEvaluationQueueList\n"],"mappings":"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"}