synapse-react-client 4.0.19 → 4.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1619) hide show
  1. package/dist/SWC.index.d.ts +1 -1
  2. package/dist/SWC.index.js +1 -1
  3. package/dist/SWC.index.js.map +1 -1
  4. package/dist/aridhia-queries/aridhiaTokenExchange.js.map +1 -1
  5. package/dist/aridhia-queries/useGetAridhiaRequests.js.map +1 -1
  6. package/dist/assets/DefaultColorfulPortalCardBackground.js.map +1 -1
  7. package/dist/assets/GoogleIcon.js.map +1 -1
  8. package/dist/assets/GoogleIcon24.js.map +1 -1
  9. package/dist/assets/homepage/BlinkingLiveIcon.d.ts +1 -1
  10. package/dist/assets/homepage/BlinkingLiveIcon.js.map +1 -1
  11. package/dist/assets/homepage/aacr.js.map +1 -1
  12. package/dist/assets/homepage/cri.js.map +1 -1
  13. package/dist/assets/homepage/ctf.js.map +1 -1
  14. package/dist/assets/homepage/egress.js.map +1 -1
  15. package/dist/assets/homepage/facebook.js.map +1 -1
  16. package/dist/assets/homepage/fisma.js.map +1 -1
  17. package/dist/assets/homepage/gff.js.map +1 -1
  18. package/dist/assets/homepage/github.js.map +1 -1
  19. package/dist/assets/homepage/gray.js.map +1 -1
  20. package/dist/assets/homepage/hipaa-compliant.js.map +1 -1
  21. package/dist/assets/homepage/instagram.js.map +1 -1
  22. package/dist/assets/homepage/linkedin.js.map +1 -1
  23. package/dist/assets/homepage/ml-commons.js.map +1 -1
  24. package/dist/assets/homepage/nih-aging.js.map +1 -1
  25. package/dist/assets/homepage/nih-heart.js.map +1 -1
  26. package/dist/assets/homepage/nih-nci.js.map +1 -1
  27. package/dist/assets/homepage/nih-nimh.js.map +1 -1
  28. package/dist/assets/homepage/ntap.js.map +1 -1
  29. package/dist/assets/homepage/plan-item.js.map +1 -1
  30. package/dist/assets/homepage/powered-by-synapse-feature.js.map +1 -1
  31. package/dist/assets/homepage/precision-governance-feature.js.map +1 -1
  32. package/dist/assets/homepage/python.js.map +1 -1
  33. package/dist/assets/homepage/r.js.map +1 -1
  34. package/dist/assets/homepage/research-credit-feature.js.map +1 -1
  35. package/dist/assets/homepage/seamless-integration-feature.js.map +1 -1
  36. package/dist/assets/homepage/sloan.js.map +1 -1
  37. package/dist/assets/homepage/twitter.js.map +1 -1
  38. package/dist/assets/homepage/users.js.map +1 -1
  39. package/dist/assets/homepage/youtube.js.map +1 -1
  40. package/dist/assets/icons/AccessDataAnywhere.js.map +1 -1
  41. package/dist/assets/icons/AccessPending.js.map +1 -1
  42. package/dist/assets/icons/AccessPendingCloud.js.map +1 -1
  43. package/dist/assets/icons/AddAd.js.map +1 -1
  44. package/dist/assets/icons/AddToList.js.map +1 -1
  45. package/dist/assets/icons/Alert.js.map +1 -1
  46. package/dist/assets/icons/Arrow.js.map +1 -1
  47. package/dist/assets/icons/AwardScroll.js.map +1 -1
  48. package/dist/assets/icons/Baseline.js.map +1 -1
  49. package/dist/assets/icons/Cavatica.js.map +1 -1
  50. package/dist/assets/icons/CertifiedUser.js.map +1 -1
  51. package/dist/assets/icons/Challenge.js.map +1 -1
  52. package/dist/assets/icons/Checkbox/Checked.js.map +1 -1
  53. package/dist/assets/icons/Checkbox/Checked2.js.map +1 -1
  54. package/dist/assets/icons/Checkbox/Indeterminate.js.map +1 -1
  55. package/dist/assets/icons/Checkbox/Indeterminate2.js.map +1 -1
  56. package/dist/assets/icons/Checkbox/Unchecked.js.map +1 -1
  57. package/dist/assets/icons/Checkbox/Unchecked2.js.map +1 -1
  58. package/dist/assets/icons/ClappingHands.js.map +1 -1
  59. package/dist/assets/icons/CloudWarning.js.map +1 -1
  60. package/dist/assets/icons/CommunicateFindings.js.map +1 -1
  61. package/dist/assets/icons/CreateVersion.js.map +1 -1
  62. package/dist/assets/icons/DNA_Two.js.map +1 -1
  63. package/dist/assets/icons/Data2.js.map +1 -1
  64. package/dist/assets/icons/DoubleQuotes.js.map +1 -1
  65. package/dist/assets/icons/EmailAddressAdornment.js.map +1 -1
  66. package/dist/assets/icons/FileWithShield.js.map +1 -1
  67. package/dist/assets/icons/FileWithShield2.js.map +1 -1
  68. package/dist/assets/icons/FrontHand.js.map +1 -1
  69. package/dist/assets/icons/HandWithMoney.js.map +1 -1
  70. package/dist/assets/icons/IconCopy.js.map +1 -1
  71. package/dist/assets/icons/IconMinus.js.map +1 -1
  72. package/dist/assets/icons/IconPlus.js.map +1 -1
  73. package/dist/assets/icons/Java.js.map +1 -1
  74. package/dist/assets/icons/MintDoi.js.map +1 -1
  75. package/dist/assets/icons/MultiFile.js.map +1 -1
  76. package/dist/assets/icons/MultiFile2.js.map +1 -1
  77. package/dist/assets/icons/NoData.js.map +1 -1
  78. package/dist/assets/icons/NoSearchResults.js.map +1 -1
  79. package/dist/assets/icons/ORCIDIcon.js.map +1 -1
  80. package/dist/assets/icons/OpenBook.js.map +1 -1
  81. package/dist/assets/icons/Podium.js.map +1 -1
  82. package/dist/assets/icons/Python.js.map +1 -1
  83. package/dist/assets/icons/QueryStructuredData.js.map +1 -1
  84. package/dist/assets/icons/RLogo.js.map +1 -1
  85. package/dist/assets/icons/RecordProvenance.js.map +1 -1
  86. package/dist/assets/icons/RosetteRibbon.js.map +1 -1
  87. package/dist/assets/icons/SageFullLogo.js.map +1 -1
  88. package/dist/assets/icons/SearchImage.js.map +1 -1
  89. package/dist/assets/icons/ShareYourResearch.js.map +1 -1
  90. package/dist/assets/icons/Sort.js.map +1 -1
  91. package/dist/assets/icons/StarTrophy.js.map +1 -1
  92. package/dist/assets/icons/SynapseFullLogo.js.map +1 -1
  93. package/dist/assets/icons/SynapseIconWhite.js.map +1 -1
  94. package/dist/assets/icons/SynapseLogoName.js.map +1 -1
  95. package/dist/assets/icons/TasksIcon.js.map +1 -1
  96. package/dist/assets/icons/Terminal.js.map +1 -1
  97. package/dist/assets/icons/ThreeStars.js.map +1 -1
  98. package/dist/assets/icons/UnpackagableFile.js.map +1 -1
  99. package/dist/assets/icons/UnpackagableFile2.js.map +1 -1
  100. package/dist/assets/icons/ValidatedProfile.js.map +1 -1
  101. package/dist/assets/icons/account-certified.js.map +1 -1
  102. package/dist/assets/icons/account-enabled-mfa.js.map +1 -1
  103. package/dist/assets/icons/account-validated.js.map +1 -1
  104. package/dist/assets/icons/bioChemicalPhysical.js.map +1 -1
  105. package/dist/assets/icons/chart2.js.map +1 -1
  106. package/dist/assets/icons/columns.js.map +1 -1
  107. package/dist/assets/icons/columnsDarkTheme.js.map +1 -1
  108. package/dist/assets/icons/computationalTool.js.map +1 -1
  109. package/dist/assets/icons/dataReuse.js.map +1 -1
  110. package/dist/assets/icons/emailAddressAdornment2.js.map +1 -1
  111. package/dist/assets/icons/emailWithNotification.js.map +1 -1
  112. package/dist/assets/icons/error_page/maintenance.js.map +1 -1
  113. package/dist/assets/icons/error_page/no-access.js.map +1 -1
  114. package/dist/assets/icons/error_page/unavailable.js.map +1 -1
  115. package/dist/assets/icons/file.js.map +1 -1
  116. package/dist/assets/icons/inSilicoModel.js.map +1 -1
  117. package/dist/assets/icons/institution.js.map +1 -1
  118. package/dist/assets/icons/json-form-tool-no-submissions.js.map +1 -1
  119. package/dist/assets/icons/modelSystem.js.map +1 -1
  120. package/dist/assets/icons/mouse.js.map +1 -1
  121. package/dist/assets/icons/organizations.js.map +1 -1
  122. package/dist/assets/icons/person.js.map +1 -1
  123. package/dist/assets/icons/spatialProfiling.js.map +1 -1
  124. package/dist/assets/icons/standardDataModel.js.map +1 -1
  125. package/dist/assets/icons/study-active.js.map +1 -1
  126. package/dist/assets/icons/study-complete.js.map +1 -1
  127. package/dist/assets/icons/subscribe_plus.js.map +1 -1
  128. package/dist/assets/icons/synapse-logo.js.map +1 -1
  129. package/dist/assets/icons/terms/CheckIcon.js.map +1 -1
  130. package/dist/assets/icons/translational.js.map +1 -1
  131. package/dist/assets/icons/tree_horizontal.js.map +1 -1
  132. package/dist/assets/illustrations/acknowledgement_statements_illustration.js.map +1 -1
  133. package/dist/assets/illustrations/challenges_illustration.js.map +1 -1
  134. package/dist/assets/illustrations/cohort_builder_illustration.js.map +1 -1
  135. package/dist/assets/illustrations/data_access_management_illustration.js.map +1 -1
  136. package/dist/assets/illustrations/datasets_illustration.js.map +1 -1
  137. package/dist/assets/illustrations/diagonalLinePattern.js.map +1 -1
  138. package/dist/assets/illustrations/discussions_illustration.js.map +1 -1
  139. package/dist/assets/illustrations/docker_illustration.js.map +1 -1
  140. package/dist/assets/illustrations/donation_illustration.js.map +1 -1
  141. package/dist/assets/illustrations/favorites_illustration.js.map +1 -1
  142. package/dist/assets/illustrations/files_illustration.js.map +1 -1
  143. package/dist/assets/illustrations/following_illustration.js.map +1 -1
  144. package/dist/assets/illustrations/index.js.map +1 -1
  145. package/dist/assets/illustrations/left_dot_blob_dark_illustration.js.map +1 -1
  146. package/dist/assets/illustrations/left_dot_blob_illustration.js.map +1 -1
  147. package/dist/assets/illustrations/projects_illustration.js.map +1 -1
  148. package/dist/assets/illustrations/right_dot_blob_dark_illustration.js.map +1 -1
  149. package/dist/assets/illustrations/right_dot_blob_illustration.js.map +1 -1
  150. package/dist/assets/illustrations/tables_illustration.js.map +1 -1
  151. package/dist/assets/illustrations/teams_illustration.js.map +1 -1
  152. package/dist/assets/illustrations/trash_can_illustration.js.map +1 -1
  153. package/dist/assets/illustrations/underconstruction_illustration.js.map +1 -1
  154. package/dist/assets/illustrations/wikis_illustration.js.map +1 -1
  155. package/dist/assets/logos/other/ad-workbench-logo.js.map +1 -1
  156. package/dist/assets/logos/other/cavatica-logo.js.map +1 -1
  157. package/dist/assets/logos/other/pluto-logo.js.map +1 -1
  158. package/dist/assets/logos/other/terra-logo.js.map +1 -1
  159. package/dist/assets/mui_components/AccessManagement.js.map +1 -1
  160. package/dist/assets/mui_components/AccountCertified.js.map +1 -1
  161. package/dist/assets/mui_components/AccountRegistered.js.map +1 -1
  162. package/dist/assets/mui_components/AccountValidated.js.map +1 -1
  163. package/dist/assets/mui_components/ActionKey.js.map +1 -1
  164. package/dist/assets/mui_components/BioChemicalPhysical.js.map +1 -1
  165. package/dist/assets/mui_components/Chromatin.js.map +1 -1
  166. package/dist/assets/mui_components/Clinical.js.map +1 -1
  167. package/dist/assets/mui_components/ComputationalTool.js.map +1 -1
  168. package/dist/assets/mui_components/Data.js.map +1 -1
  169. package/dist/assets/mui_components/DataLocked.js.map +1 -1
  170. package/dist/assets/mui_components/DataReuse.js.map +1 -1
  171. package/dist/assets/mui_components/Dataset.js.map +1 -1
  172. package/dist/assets/mui_components/DatasetCollection.js.map +1 -1
  173. package/dist/assets/mui_components/Docker.js.map +1 -1
  174. package/dist/assets/mui_components/GeneExpression.js.map +1 -1
  175. package/dist/assets/mui_components/GeneVariants.js.map +1 -1
  176. package/dist/assets/mui_components/HelpChatBubble.js.map +1 -1
  177. package/dist/assets/mui_components/Imaging.js.map +1 -1
  178. package/dist/assets/mui_components/InSilicoModel.js.map +1 -1
  179. package/dist/assets/mui_components/Kinomics.js.map +1 -1
  180. package/dist/assets/mui_components/LineGraph.js.map +1 -1
  181. package/dist/assets/mui_components/ModelSystem.js.map +1 -1
  182. package/dist/assets/mui_components/Other.js.map +1 -1
  183. package/dist/assets/mui_components/PackagableFile.js.map +1 -1
  184. package/dist/assets/mui_components/PackagableFile2.js.map +1 -1
  185. package/dist/assets/mui_components/Proteomics.js.map +1 -1
  186. package/dist/assets/mui_components/Rat.js.map +1 -1
  187. package/dist/assets/mui_components/SpatialProfiling.js.map +1 -1
  188. package/dist/assets/sustainability/darkDialPosition1.js.map +1 -1
  189. package/dist/assets/sustainability/darkDialPosition2.js.map +1 -1
  190. package/dist/assets/sustainability/darkDialPosition3.js.map +1 -1
  191. package/dist/assets/sustainability/darkDialPosition4.js.map +1 -1
  192. package/dist/assets/sustainability/dialPosition1.js.map +1 -1
  193. package/dist/assets/sustainability/dialPosition2.js.map +1 -1
  194. package/dist/assets/sustainability/dialPosition3.js.map +1 -1
  195. package/dist/assets/sustainability/dialPosition4.js.map +1 -1
  196. package/dist/assets/themed_icons/Active.js.map +1 -1
  197. package/dist/assets/themed_icons/Chart.js.map +1 -1
  198. package/dist/assets/themed_icons/Close.js.map +1 -1
  199. package/dist/assets/themed_icons/Collapse.js.map +1 -1
  200. package/dist/assets/themed_icons/Columns.js.map +1 -1
  201. package/dist/assets/themed_icons/ColumnsDark.js.map +1 -1
  202. package/dist/assets/themed_icons/Database.js.map +1 -1
  203. package/dist/assets/themed_icons/Download.js.map +1 -1
  204. package/dist/assets/themed_icons/Expand.js.map +1 -1
  205. package/dist/assets/themed_icons/Explore.js.map +1 -1
  206. package/dist/assets/themed_icons/ExternalLink.js.map +1 -1
  207. package/dist/assets/themed_icons/Filter.js.map +1 -1
  208. package/dist/assets/themed_icons/Program.js.map +1 -1
  209. package/dist/assets/themed_icons/Project.js.map +1 -1
  210. package/dist/assets/themed_icons/Publication.js.map +1 -1
  211. package/dist/assets/themed_icons/Search.js.map +1 -1
  212. package/dist/assets/themed_icons/Settings.js.map +1 -1
  213. package/dist/assets/themed_icons/SortDown.js.map +1 -1
  214. package/dist/assets/themed_icons/SortUp.js.map +1 -1
  215. package/dist/assets/themed_icons/SqlEditorIcon.js.map +1 -1
  216. package/dist/assets/themed_icons/Study.js.map +1 -1
  217. package/dist/assets/themed_icons/ToolClinical.js.map +1 -1
  218. package/dist/assets/themed_icons/ToolComputational.js.map +1 -1
  219. package/dist/assets/themed_icons/ToolExperimental.js.map +1 -1
  220. package/dist/assets/themed_icons/VerticalDots.js.map +1 -1
  221. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js.map +1 -1
  222. package/dist/components/AccessRequirement/EntityActionsRequired.js.map +1 -1
  223. package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.js.map +1 -1
  224. package/dist/components/AccessRequirementAclEditor/AccessRequirementAclEditor.js.map +1 -1
  225. package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js +10 -11
  226. package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js.map +1 -1
  227. package/dist/components/AccessRequirementList/AccessRequirementList.js +73 -76
  228. package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
  229. package/dist/components/AccessRequirementList/AccessRequirementListItem.js.map +1 -1
  230. package/dist/components/AccessRequirementList/AccessRequirementListUtils.js.map +1 -1
  231. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/CancelRequestDataAccess.js.map +1 -1
  232. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js.map +1 -1
  233. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js.map +1 -1
  234. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DocumentTemplate.js.map +1 -1
  235. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.js.map +1 -1
  236. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItem.js.map +1 -1
  237. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItemView.js.map +1 -1
  238. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestDataAccessSuccess.js.map +1 -1
  239. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js.map +1 -1
  240. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/UploadDocumentField.js.map +1 -1
  241. package/dist/components/AccessRequirementList/RequirementItem/AuthenticatedRequirement.js.map +1 -1
  242. package/dist/components/AccessRequirementList/RequirementItem/CertificationRequirement.js.map +1 -1
  243. package/dist/components/AccessRequirementList/RequirementItem/LockAccessRequirementItem.js.map +1 -1
  244. package/dist/components/AccessRequirementList/RequirementItem/RequirementItem.js.map +1 -1
  245. package/dist/components/AccessRequirementList/RequirementItem/SelfSignAccessRequirementItem.js.map +1 -1
  246. package/dist/components/AccessRequirementList/RequirementItem/TwoFactorAuthEnabledRequirement.js.map +1 -1
  247. package/dist/components/AccessRequirementList/RequirementItem/UnmanagedACTAccessRequirementItem.js.map +1 -1
  248. package/dist/components/AccessRequirementList/RequirementItem/ValidationRequirement.js.map +1 -1
  249. package/dist/components/AccessRequirementRelatedProjectsList/AccessRequirementRelatedProjectsList.js.map +1 -1
  250. package/dist/components/AccessTokenPage/AccessTokenCard/AccessTokenCard.js.map +1 -1
  251. package/dist/components/AccessTokenPage/AccessTokenPage.js.map +1 -1
  252. package/dist/components/AccessTokenPage/CreateAccessTokenModal.js.map +1 -1
  253. package/dist/components/AccountLevelBadge/AccountLevelBadge.js.map +1 -1
  254. package/dist/components/AccountLevelBadges/AccountLevelBadges.js.map +1 -1
  255. package/dist/components/AccountLevelBadges/useRevokeCertificationUI.js.map +1 -1
  256. package/dist/components/AcknowledgementsPage/AcknowledgementsDialog.js.map +1 -1
  257. package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js.map +1 -1
  258. package/dist/components/AcknowledgementsPage/StudyAcknowledgement.js.map +1 -1
  259. package/dist/components/AcknowledgementsPage/StudyAcknowledgements.js.map +1 -1
  260. package/dist/components/AclEditor/AclEditor.js.map +1 -1
  261. package/dist/components/AclEditor/AclEditor.test-utils.js.map +1 -1
  262. package/dist/components/AclEditor/AclEditorSkeleton.js.map +1 -1
  263. package/dist/components/AclEditor/PermissionLevelMenu.js.map +1 -1
  264. package/dist/components/AclEditor/ReadOnlyPermissionLevel.js.map +1 -1
  265. package/dist/components/AclEditor/ResourceAccessAndUserGroupHeader.js +2 -4
  266. package/dist/components/AclEditor/ResourceAccessAndUserGroupHeader.js.map +1 -1
  267. package/dist/components/AclEditor/ResourceAccessItem.js.map +1 -1
  268. package/dist/components/AclEditor/useSortResourceAccessList.js.map +1 -1
  269. package/dist/components/AclEditor/useUpdateAcl.js.map +1 -1
  270. package/dist/components/AdaptiveTwoColumnLayout/AdaptiveTwoColumnLayout.js.map +1 -1
  271. package/dist/components/AddToDownloadListV2.js.map +1 -1
  272. package/dist/components/Aridhia/AridhiaAccessStatus.js.map +1 -1
  273. package/dist/components/Aridhia/aridhiaAccessStatusUtils.js.map +1 -1
  274. package/dist/components/Authentication/AuthenticationMethodSelection.js.map +1 -1
  275. package/dist/components/Authentication/LastLoginInfo.js.map +1 -1
  276. package/dist/components/Authentication/LoginFlowBackButton.js.map +1 -1
  277. package/dist/components/Authentication/LoginForm.js.map +1 -1
  278. package/dist/components/Authentication/LoginMethod.js.map +1 -1
  279. package/dist/components/Authentication/LoginMethodButton.js.map +1 -1
  280. package/dist/components/Authentication/Logout.js.map +1 -1
  281. package/dist/components/Authentication/OneTimePasswordForm.js.map +1 -1
  282. package/dist/components/Authentication/PasswordField.js.map +1 -1
  283. package/dist/components/Authentication/RecoveryCodeForm.js.map +1 -1
  284. package/dist/components/Authentication/RecoveryCodeGrid.js.map +1 -1
  285. package/dist/components/Authentication/RegenerateBackupCodesWarning.js.map +1 -1
  286. package/dist/components/Authentication/Reset2FAWarning.js.map +1 -1
  287. package/dist/components/Authentication/StandaloneLoginForm.js.map +1 -1
  288. package/dist/components/Authentication/TOTPForm.js.map +1 -1
  289. package/dist/components/Authentication/TwoFactorAuthSettingsPanel.js.map +1 -1
  290. package/dist/components/Authentication/TwoFactorBackupCodes.js.map +1 -1
  291. package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
  292. package/dist/components/Authentication/TwoFactorSecretDialog.js.map +1 -1
  293. package/dist/components/Authentication/UsernamePasswordForm.js.map +1 -1
  294. package/dist/components/BasePortalCard/BasePortalCard.js.map +1 -1
  295. package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.js.map +1 -1
  296. package/dist/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
  297. package/dist/components/CTASectionWrapper/CTASectionWrapper.js.map +1 -1
  298. package/dist/components/CannedRejectionDialog/CannedRejectionDialog.js.map +1 -1
  299. package/dist/components/CardContainer/CardConfiguration.d.ts +2 -0
  300. package/dist/components/CardContainer/CardConfiguration.d.ts.map +1 -1
  301. package/dist/components/CardContainer/CardContainer.d.ts.map +1 -1
  302. package/dist/components/CardContainer/CardContainer.js +3 -3
  303. package/dist/components/CardContainer/CardContainer.js.map +1 -1
  304. package/dist/components/CardContainerLogic/CardContainerLogic.d.ts +1 -0
  305. package/dist/components/CardContainerLogic/CardContainerLogic.d.ts.map +1 -1
  306. package/dist/components/CardContainerLogic/CardContainerLogic.js.map +1 -1
  307. package/dist/components/CardDeck/CardDeck.Desktop.js.map +1 -1
  308. package/dist/components/CardDeck/CardDeck.Mobile.js.map +1 -1
  309. package/dist/components/CardDeck/CardDeck.js.map +1 -1
  310. package/dist/components/CardDeck/TableQueryCardDeck.js.map +1 -1
  311. package/dist/components/CardGridWithLinks/CardGridWithLinks.js.map +1 -1
  312. package/dist/components/CertificationQuiz/CertificationAnswer.js.map +1 -1
  313. package/dist/components/CertificationQuiz/CertificationQuiz.js.map +1 -1
  314. package/dist/components/ChallengeDataDownload/ChallengeDataDownload.js.map +1 -1
  315. package/dist/components/ChallengeDetailPage/ChallengeDetailPage.js.map +1 -1
  316. package/dist/components/ChallengeRegisterButton/ChallengeRegisterButton.js.map +1 -1
  317. package/dist/components/ChallengeRequirementsModal/ChallengeRequirementsModal.js.map +1 -1
  318. package/dist/components/ChallengeSubmission/AddExternalRepo.js.map +1 -1
  319. package/dist/components/ChallengeSubmission/AvailableEvaluationQueueList.js.map +1 -1
  320. package/dist/components/ChallengeSubmission/ChallengeSubmission.js.map +1 -1
  321. package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js +62 -64
  322. package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js.map +1 -1
  323. package/dist/components/ChallengeSubmission/EvaluationQueueCurrentRoundInfo.js.map +1 -1
  324. package/dist/components/ChallengeSubmission/EvaluationQueueList.js.map +1 -1
  325. package/dist/components/ChallengeSubmission/SubmissionCommitList.js.map +1 -1
  326. package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js.map +1 -1
  327. package/dist/components/ChallengeTeamWizard/ChallengeTeamSearch.js.map +1 -1
  328. package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.js.map +1 -1
  329. package/dist/components/ChallengeTeamWizard/ChallengeTeamWizard.js +96 -102
  330. package/dist/components/ChallengeTeamWizard/ChallengeTeamWizard.js.map +1 -1
  331. package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js.map +1 -1
  332. package/dist/components/ChallengeTeamWizard/MembershipRequestForm.js.map +1 -1
  333. package/dist/components/ChallengeTeamWizard/OpenMembershipInvitation.js.map +1 -1
  334. package/dist/components/ChallengeTeamWizard/RegistrationSuccessful.js.map +1 -1
  335. package/dist/components/ChallengeTeamWizard/SelectChallengeTeam.js.map +1 -1
  336. package/dist/components/ChallengeTeamWizard/useCreateAndRegisterChallengeTeam.js.map +1 -1
  337. package/dist/components/ChangePassword/ChangePassword.js.map +1 -1
  338. package/dist/components/ChangePassword/ChangePasswordWithToken.js.map +1 -1
  339. package/dist/components/ChangePassword/useChangePasswordFormState.js.map +1 -1
  340. package/dist/components/CitationPopover/CitationPopover.js.map +1 -1
  341. package/dist/components/CitationPopover/CitationPopoverContent.js.map +1 -1
  342. package/dist/components/CitationPopover/CitationPopoverUtils.js.map +1 -1
  343. package/dist/components/CitationPopover/useCitation.js.map +1 -1
  344. package/dist/components/ColorGradient/ColorGradient.js.map +1 -1
  345. package/dist/components/ColoredBulletListItem/ColoredBulletListItem.js.map +1 -1
  346. package/dist/components/ColumnFilter/ColumnFilter.js.map +1 -1
  347. package/dist/components/ComponentCollapse.js.map +1 -1
  348. package/dist/components/ConfirmationDialog/ConfirmationDialog.js.map +1 -1
  349. package/dist/components/CookiesNotification/CookiePreferencesDialog.js.map +1 -1
  350. package/dist/components/CookiesNotification/CookiesNotification.d.ts.map +1 -1
  351. package/dist/components/CookiesNotification/CookiesNotification.js +9 -9
  352. package/dist/components/CookiesNotification/CookiesNotification.js.map +1 -1
  353. package/dist/components/CopyToClipboardIcon.js.map +1 -1
  354. package/dist/components/CopyToClipboardInput/CopyToClipboardInput.js.map +1 -1
  355. package/dist/components/CopyToClipboardString/CopyToClipboardString.js.map +1 -1
  356. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js.map +1 -1
  357. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizardUtils.js.map +1 -1
  358. package/dist/components/CreateProjectModal/CreateProjectModal.js.map +1 -1
  359. package/dist/components/CreateProjectModal/ProjectVisibilityRadioGroup.js.map +1 -1
  360. package/dist/components/CreateTableViewWizard/CreateTableViewWizard.js.map +1 -1
  361. package/dist/components/CreateTableViewWizard/CreateTableViewWizardUtils.js.map +1 -1
  362. package/dist/components/CreateTableViewWizard/TableNameForm.js.map +1 -1
  363. package/dist/components/CreateTableViewWizard/TableTypeSelection.js.map +1 -1
  364. package/dist/components/CreateTableViewWizard/ViewTypeSelection.js.map +1 -1
  365. package/dist/components/CrispChat/CrispChat.js.map +1 -1
  366. package/dist/components/DataExplorer/DataExplorer.css +1 -1
  367. package/dist/components/DataExplorer/DataExplorer.js +28 -31
  368. package/dist/components/DataExplorer/DataExplorer.js.map +1 -1
  369. package/dist/components/DataExplorer/DataExplorer.module.js +16 -16
  370. package/dist/components/DataExplorer/DataExplorer.module.js.map +1 -1
  371. package/dist/components/DataExplorer/DataExplorer.module.scss +26 -6
  372. package/dist/components/DataGrid/DataGrid.js +72 -72
  373. package/dist/components/DataGrid/DataGrid.js.map +1 -1
  374. package/dist/components/DataGrid/DataGridTypes.js.map +1 -1
  375. package/dist/components/DataGrid/DataGridWebSocket.d.ts +2 -0
  376. package/dist/components/DataGrid/DataGridWebSocket.d.ts.map +1 -1
  377. package/dist/components/DataGrid/DataGridWebSocket.js +9 -10
  378. package/dist/components/DataGrid/DataGridWebSocket.js.map +1 -1
  379. package/dist/components/DataGrid/MergeGridWithSourceTableButton.js.map +1 -1
  380. package/dist/components/DataGrid/StartGridSession.js.map +1 -1
  381. package/dist/components/DataGrid/SynapseGrid.d.ts +3 -1
  382. package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
  383. package/dist/components/DataGrid/SynapseGrid.js +219 -211
  384. package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
  385. package/dist/components/DataGrid/columns/AutocompleteColumn.js.map +1 -1
  386. package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.js.map +1 -1
  387. package/dist/components/DataGrid/columns/DateTimeColumn.js.map +1 -1
  388. package/dist/components/DataGrid/columns/GridAutocompleteChip.js.map +1 -1
  389. package/dist/components/DataGrid/columns/useGridAutocompleteState.js.map +1 -1
  390. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.d.ts +5 -3
  391. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.d.ts.map +1 -1
  392. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js +46 -47
  393. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js.map +1 -1
  394. package/dist/components/DataGrid/components/ExportCsvFromGridButton.js.map +1 -1
  395. package/dist/components/DataGrid/components/GridMenuButton/GridMenuButton.js.map +1 -1
  396. package/dist/components/DataGrid/components/GridSessionSelectionField.js.map +1 -1
  397. package/dist/components/DataGrid/components/UploadCsvToGridButton.js.map +1 -1
  398. package/dist/components/DataGrid/components/UploadCsvToGridDialog.js.map +1 -1
  399. package/dist/components/DataGrid/components/ValidationAlert.js.map +1 -1
  400. package/dist/components/DataGrid/components/contextMenu.js.map +1 -1
  401. package/dist/components/DataGrid/hooks/useColumnResizeHandles.d.ts.map +1 -1
  402. package/dist/components/DataGrid/hooks/useColumnResizeHandles.js +3 -1
  403. package/dist/components/DataGrid/hooks/useColumnResizeHandles.js.map +1 -1
  404. package/dist/components/DataGrid/hooks/useExportDataGridToCsv.js.map +1 -1
  405. package/dist/components/DataGrid/hooks/useGetSchemaForGrid.js.map +1 -1
  406. package/dist/components/DataGrid/hooks/useGridReplicaUsers.js.map +1 -1
  407. package/dist/components/DataGrid/hooks/useGridUndoRedo.js.map +1 -1
  408. package/dist/components/DataGrid/hooks/useRemoteSelections.js.map +1 -1
  409. package/dist/components/DataGrid/hooks/useStack.js.map +1 -1
  410. package/dist/components/DataGrid/useCRDTModelView.js.map +1 -1
  411. package/dist/components/DataGrid/useDataGridWebsocket.d.ts +2 -0
  412. package/dist/components/DataGrid/useDataGridWebsocket.d.ts.map +1 -1
  413. package/dist/components/DataGrid/useDataGridWebsocket.js +12 -2
  414. package/dist/components/DataGrid/useDataGridWebsocket.js.map +1 -1
  415. package/dist/components/DataGrid/useInitializeGridConnection.js.map +1 -1
  416. package/dist/components/DataGrid/useMergeGridWithRecordSet.js.map +1 -1
  417. package/dist/components/DataGrid/useMergeGridWithSource.js.map +1 -1
  418. package/dist/components/DataGrid/useMergeGridWithTable.js.map +1 -1
  419. package/dist/components/DataGrid/utils/DataGridUtils.js.map +1 -1
  420. package/dist/components/DataGrid/utils/MessageCounter.js.map +1 -1
  421. package/dist/components/DataGrid/utils/applyModelChange.js.map +1 -1
  422. package/dist/components/DataGrid/utils/calculateColumnWidth.js.map +1 -1
  423. package/dist/components/DataGrid/utils/columnFactory.d.ts.map +1 -1
  424. package/dist/components/DataGrid/utils/columnFactory.js +1 -0
  425. package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
  426. package/dist/components/DataGrid/utils/computeReplicaSelectionModel.js.map +1 -1
  427. package/dist/components/DataGrid/utils/convertActionToModelChange.js.map +1 -1
  428. package/dist/components/DataGrid/utils/createTestModel.js.map +1 -1
  429. package/dist/components/DataGrid/utils/enrichRowsWithChangeInfo.js.map +1 -1
  430. package/dist/components/DataGrid/utils/extractColumnValidationMessages.js.map +1 -1
  431. package/dist/components/DataGrid/utils/getCellAuthorSid.js.map +1 -1
  432. package/dist/components/DataGrid/utils/getCellClassName.js.map +1 -1
  433. package/dist/components/DataGrid/utils/getChangeTooltipText.js.map +1 -1
  434. package/dist/components/DataGrid/utils/getEmptyValue.js.map +1 -1
  435. package/dist/components/DataGrid/utils/getReplicaCategory.js.map +1 -1
  436. package/dist/components/DataGrid/utils/isValidationUpToDateForRow.js.map +1 -1
  437. package/dist/components/DataGrid/utils/json-rx/JsonRx.js.map +1 -1
  438. package/dist/components/DataGrid/utils/json-rx/JsonRxMessage.js.map +1 -1
  439. package/dist/components/DataGrid/utils/json-rx/JsonRxNotification.js.map +1 -1
  440. package/dist/components/DataGrid/utils/json-rx/JsonRxRequest.js.map +1 -1
  441. package/dist/components/DataGrid/utils/json-rx/JsonRxRequestComplete.js.map +1 -1
  442. package/dist/components/DataGrid/utils/json-rx/JsonRxResponse.js.map +1 -1
  443. package/dist/components/DataGrid/utils/json-rx/JsonRxResponseComplete.js.map +1 -1
  444. package/dist/components/DataGrid/utils/logicalTimestampToString.js.map +1 -1
  445. package/dist/components/DataGrid/utils/mapOperationsToModelChanges.js.map +1 -1
  446. package/dist/components/DataGrid/utils/modelColsToGrid.js.map +1 -1
  447. package/dist/components/DataGrid/utils/modelRowsToGrid.js.map +1 -1
  448. package/dist/components/DataGrid/utils/parseFreeTextUsingJsonSchemaType.js.map +1 -1
  449. package/dist/components/DataGrid/utils/replicaSelectionToGridSelection.js.map +1 -1
  450. package/dist/components/DataGrid/utils/schemaAwarePasteValue.js.map +1 -1
  451. package/dist/components/DataGrid/utils/splitPatch.js.map +1 -1
  452. package/dist/components/DatasetJsonLdScript.js.map +1 -1
  453. package/dist/components/DateTimePicker/DateTimePicker.js.map +1 -1
  454. package/dist/components/Dialog/ConfirmCloseWithoutSavingDialog.js.map +1 -1
  455. package/dist/components/DialogBase.js.map +1 -1
  456. package/dist/components/DirectDownload/DirectDownload.js.map +1 -1
  457. package/dist/components/DirectDownload/FileEntityDirectDownload.js.map +1 -1
  458. package/dist/components/DirectDownloadButton.js.map +1 -1
  459. package/dist/components/DownloadCart/ActionRequiredCard/ActionRequiredCard.js.map +1 -1
  460. package/dist/components/DownloadCart/ActionRequiredListItem.js.map +1 -1
  461. package/dist/components/DownloadCart/AvailableForDownloadTable.js.map +1 -1
  462. package/dist/components/DownloadCart/CreatePackageV2.js.map +1 -1
  463. package/dist/components/DownloadCart/DirectProgrammaticDownload.js.map +1 -1
  464. package/dist/components/DownloadCart/DownloadCartPage.js.map +1 -1
  465. package/dist/components/DownloadCart/DownloadDetails.js.map +1 -1
  466. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js.map +1 -1
  467. package/dist/components/DownloadCart/DownloadListActionsRequired.js.map +1 -1
  468. package/dist/components/DownloadCart/DownloadListStats.js.map +1 -1
  469. package/dist/components/DownloadCart/DownloadListTable.js.map +1 -1
  470. package/dist/components/DownloadCart/EnableTwoFaRequirementCard.js.map +1 -1
  471. package/dist/components/DownloadCart/MeetAccessRequirementCard.js.map +1 -1
  472. package/dist/components/DownloadCart/RequestDownloadCard.js.map +1 -1
  473. package/dist/components/DownloadCart/ShowDownloadV2.js.map +1 -1
  474. package/dist/components/DownloadCart/TableQueryActionsRequired.js.map +1 -1
  475. package/dist/components/DownloadCart/fileNameUtils.js.map +1 -1
  476. package/dist/components/DraggableDialog/DraggableDialog.js.map +1 -1
  477. package/dist/components/DropdownSelect/DropdownSelect.js.map +1 -1
  478. package/dist/components/DynamicForm/DynamicForm.js.map +1 -1
  479. package/dist/components/DynamicForm/DynamicFormModal.js.map +1 -1
  480. package/dist/components/Ecosystem/EcosystemCard.js.map +1 -1
  481. package/dist/components/Ecosystem/EcosystemLayout.js.map +1 -1
  482. package/dist/components/Ecosystem/EcosystemSkeleton.js.map +1 -1
  483. package/dist/components/Ecosystem/TableQueryEcosystem.js.map +1 -1
  484. package/dist/components/EntityAclEditor/CreateOrDeleteLocalSharingSettingsButton.js.map +1 -1
  485. package/dist/components/EntityAclEditor/EntityAclEditor.js.map +1 -1
  486. package/dist/components/EntityAclEditor/EntityAclEditorModal.js.map +1 -1
  487. package/dist/components/EntityAclEditor/InheritanceMessage.js.map +1 -1
  488. package/dist/components/EntityAclEditor/OpenData.js.map +1 -1
  489. package/dist/components/EntityAclEditor/useNotifyNewACLUsers.js.map +1 -1
  490. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js +68 -70
  491. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js.map +1 -1
  492. package/dist/components/EntityCitation/EntityCitation.js.map +1 -1
  493. package/dist/components/EntityCitation/EntityCitationUtils.js.map +1 -1
  494. package/dist/components/EntityDownloadButton/EntityDownloadButton.js +32 -35
  495. package/dist/components/EntityDownloadButton/EntityDownloadButton.js.map +1 -1
  496. package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js.map +1 -1
  497. package/dist/components/EntityFinder/Breadcrumbs.js.map +1 -1
  498. package/dist/components/EntityFinder/EntityFinder.js +134 -136
  499. package/dist/components/EntityFinder/EntityFinder.js.map +1 -1
  500. package/dist/components/EntityFinder/EntityFinderModal.js.map +1 -1
  501. package/dist/components/EntityFinder/EntityIdTextField.js.map +1 -1
  502. package/dist/components/EntityFinder/VersionSelectionType.js.map +1 -1
  503. package/dist/components/EntityFinder/details/EntityDetailsList.js +20 -20
  504. package/dist/components/EntityFinder/details/EntityDetailsList.js.map +1 -1
  505. package/dist/components/EntityFinder/details/configurations/EntityChildrenDetails.js.map +1 -1
  506. package/dist/components/EntityFinder/details/configurations/FavoritesDetails.js.map +1 -1
  507. package/dist/components/EntityFinder/details/configurations/ProjectListDetails.js.map +1 -1
  508. package/dist/components/EntityFinder/details/configurations/ReferenceDetails.js.map +1 -1
  509. package/dist/components/EntityFinder/details/configurations/SearchDetails.js.map +1 -1
  510. package/dist/components/EntityFinder/details/view/DetailsView.js +67 -67
  511. package/dist/components/EntityFinder/details/view/DetailsView.js.map +1 -1
  512. package/dist/components/EntityFinder/details/view/VersionColumnHeader.js +1 -1
  513. package/dist/components/EntityFinder/details/view/VersionColumnHeader.js.map +1 -1
  514. package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js.map +1 -1
  515. package/dist/components/EntityFinder/details/view/table/CreatedOnCell.js.map +1 -1
  516. package/dist/components/EntityFinder/details/view/table/DateCell.js.map +1 -1
  517. package/dist/components/EntityFinder/details/view/table/EntityBadgeIconsCell.js.map +1 -1
  518. package/dist/components/EntityFinder/details/view/table/EntityFinderCheckboxCell.js.map +1 -1
  519. package/dist/components/EntityFinder/details/view/table/EntityFinderVersionCell.js.map +1 -1
  520. package/dist/components/EntityFinder/details/view/table/EntityNameCell.js.map +1 -1
  521. package/dist/components/EntityFinder/details/view/table/EntityTypeCell.js.map +1 -1
  522. package/dist/components/EntityFinder/details/view/table/FileEntityDirectDownloadCell.js.map +1 -1
  523. package/dist/components/EntityFinder/details/view/table/FileEntityMD5Cell.js.map +1 -1
  524. package/dist/components/EntityFinder/details/view/table/FileEntitySizeCell.js.map +1 -1
  525. package/dist/components/EntityFinder/details/view/table/ModifiedByCell.js.map +1 -1
  526. package/dist/components/EntityFinder/details/view/table/ModifiedOnCell.js.map +1 -1
  527. package/dist/components/EntityFinder/details/view/table/ParentProjectCell.js.map +1 -1
  528. package/dist/components/EntityFinder/details/view/table/UserBadgeCell.js.map +1 -1
  529. package/dist/components/EntityFinder/tree/EntityTree.js +80 -80
  530. package/dist/components/EntityFinder/tree/EntityTree.js.map +1 -1
  531. package/dist/components/EntityFinder/tree/VirtualizedTree.js +31 -31
  532. package/dist/components/EntityFinder/tree/VirtualizedTree.js.map +1 -1
  533. package/dist/components/EntityFinder/useEntitySelection.js.map +1 -1
  534. package/dist/components/EntityForm/EntityForm.js.map +1 -1
  535. package/dist/components/EntityHeaderTable/DebouncedInput.js.map +1 -1
  536. package/dist/components/EntityHeaderTable/EntityHeaderTable.js.map +1 -1
  537. package/dist/components/EntityHeaderTable/EntityHeaderTableCellRenderers.js.map +1 -1
  538. package/dist/components/EntityHeaderTable/Filter.js.map +1 -1
  539. package/dist/components/EntityHeaderTable/useEntityHeaderTableState.js.map +1 -1
  540. package/dist/components/EntityIcon.js.map +1 -1
  541. package/dist/components/EntityLink.js.map +1 -1
  542. package/dist/components/EntitySubjectsSelector/EntitySubjectsSelector.js.map +1 -1
  543. package/dist/components/EntityTreeTable/EntityTreeTable.js.map +1 -1
  544. package/dist/components/EntityTreeTable/components/AutoLoadMore.js.map +1 -1
  545. package/dist/components/EntityTreeTable/components/ColumnHeaders.js.map +1 -1
  546. package/dist/components/EntityTreeTable/components/EntityBadgeIconsCell.js.map +1 -1
  547. package/dist/components/EntityTreeTable/components/EntityNameCell.js.map +1 -1
  548. package/dist/components/EntityTreeTable/components/EntityTreeTableContext.js.map +1 -1
  549. package/dist/components/EntityTreeTable/components/EntityTreeTableRow.js.map +1 -1
  550. package/dist/components/EntityTreeTable/components/EntityTreeTableView.js.map +1 -1
  551. package/dist/components/EntityTreeTable/components/IdCell.js.map +1 -1
  552. package/dist/components/EntityTreeTable/components/IdColumnHeader.js.map +1 -1
  553. package/dist/components/EntityTreeTable/hooks/useEntityTreeState.js.map +1 -1
  554. package/dist/components/EntityTreeTable/hooks/useTableColumns.js.map +1 -1
  555. package/dist/components/EntityTreeTable/hooks/useTableData.js.map +1 -1
  556. package/dist/components/EntityTreeTable/hooks/useTreeOperationsWithDirectFetch.js.map +1 -1
  557. package/dist/components/EntityUpload/EntityUpload.js.map +1 -1
  558. package/dist/components/EntityUpload/EntityUploadModal.js +29 -31
  559. package/dist/components/EntityUpload/EntityUploadModal.js.map +1 -1
  560. package/dist/components/EntityUpload/EntityUploadPromptDialog.js.map +1 -1
  561. package/dist/components/EntityUpload/ExternalObjectStoreCredentialsForm.js.map +1 -1
  562. package/dist/components/EntityUpload/FileUploadProgress.js.map +1 -1
  563. package/dist/components/EntityUpload/LinkToURL.js.map +1 -1
  564. package/dist/components/EntityUpload/ProjectStorageLimitAlert.js.map +1 -1
  565. package/dist/components/EntityViewScopeEditor/EntityViewMaskEditor.js.map +1 -1
  566. package/dist/components/EntityViewScopeEditor/EntityViewScopeEditor.js.map +1 -1
  567. package/dist/components/EntityViewScopeEditor/EntityViewScopeEditorModal.js.map +1 -1
  568. package/dist/components/Evaluation/CreatedOnByUserDiv.js.map +1 -1
  569. package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.js.map +1 -1
  570. package/dist/components/Evaluation/EvaluationCard.js.map +1 -1
  571. package/dist/components/Evaluation/EvaluationEditor.js.map +1 -1
  572. package/dist/components/Evaluation/EvaluationEditorPage.js.map +1 -1
  573. package/dist/components/Evaluation/EvaluationRoundEditor.js.map +1 -1
  574. package/dist/components/Evaluation/EvaluationRoundEditorDropdown.js.map +1 -1
  575. package/dist/components/Evaluation/EvaluationRoundEditorList.js.map +1 -1
  576. package/dist/components/Evaluation/input_models/models.js.map +1 -1
  577. package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptions.js.map +1 -1
  578. package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.js.map +1 -1
  579. package/dist/components/EvaluationFinder/EvaluationFinder.js.map +1 -1
  580. package/dist/components/ExperimentalMode/ExperimentalMode.d.ts.map +1 -1
  581. package/dist/components/ExperimentalMode/ExperimentalMode.js +24 -30
  582. package/dist/components/ExperimentalMode/ExperimentalMode.js.map +1 -1
  583. package/dist/components/ExternalFileHandleLink/ExternalFileHandleLink.js.map +1 -1
  584. package/dist/components/FeaturedDataTabs/FacetPlotsCard.js.map +1 -1
  585. package/dist/components/FeaturedDataTabs/FacetPlotsCardGrid.js.map +1 -1
  586. package/dist/components/FeaturedDataTabs/FeaturedDataPlots.js.map +1 -1
  587. package/dist/components/FeaturedDataTabs/FeaturedDataTabs.js.map +1 -1
  588. package/dist/components/FeaturedDataTabs/QueryPerFacetPlotsCard.js.map +1 -1
  589. package/dist/components/FeaturedDataTabs/SingleQueryFacetPlotsCards.js.map +1 -1
  590. package/dist/components/FeaturedResearch/FeaturedResearch.js +16 -18
  591. package/dist/components/FeaturedResearch/FeaturedResearch.js.map +1 -1
  592. package/dist/components/FeaturedToolsList/FeaturedToolCard.js.map +1 -1
  593. package/dist/components/FeaturedToolsList/FeaturedToolsList.js.map +1 -1
  594. package/dist/components/FilePreview/EntityPreview.js.map +1 -1
  595. package/dist/components/FilePreview/FileEntityPreview.js.map +1 -1
  596. package/dist/components/FilePreview/FileHandleContentRenderer.js.map +1 -1
  597. package/dist/components/FilePreview/HtmlPreview/HtmlPreview.js.map +1 -1
  598. package/dist/components/FilePreview/PdfPreview.js.map +1 -1
  599. package/dist/components/FilePreview/PreviewRendererType.js.map +1 -1
  600. package/dist/components/FilePreview/PreviewUtils.js.map +1 -1
  601. package/dist/components/FileUpload/FileUpload.js.map +1 -1
  602. package/dist/components/Forum/DiscussionReply.js.map +1 -1
  603. package/dist/components/Forum/DiscussionSearchResult.js.map +1 -1
  604. package/dist/components/Forum/DiscussionThread.js.map +1 -1
  605. package/dist/components/Forum/ForumPage.js.map +1 -1
  606. package/dist/components/Forum/ForumTable.js.map +1 -1
  607. package/dist/components/Forum/ForumThreadEditor.js.map +1 -1
  608. package/dist/components/Forum/SubscribersModal.js.map +1 -1
  609. package/dist/components/ForumSearch/ForumSearch.js.map +1 -1
  610. package/dist/components/FullTextSearch/FullTextSearch.js.map +1 -1
  611. package/dist/components/FullTextSearch/FullTextSearchUtils.js.map +1 -1
  612. package/dist/components/FullWidthAlert/FullWidthAlert.js.map +1 -1
  613. package/dist/components/GenericCard/BioregistryRules.js.map +1 -1
  614. package/dist/components/GenericCard/CardUtils.js.map +1 -1
  615. package/dist/components/GenericCard/CollapsibleDescription.js.map +1 -1
  616. package/dist/components/GenericCard/CroissantButton/CroissantButton.js.map +1 -1
  617. package/dist/components/GenericCard/GenericCard.d.ts +2 -0
  618. package/dist/components/GenericCard/GenericCard.d.ts.map +1 -1
  619. package/dist/components/GenericCard/GenericCard.js +76 -64
  620. package/dist/components/GenericCard/GenericCard.js.map +1 -1
  621. package/dist/components/GenericCard/GenericCardActionButton.js.map +1 -1
  622. package/dist/components/GenericCard/GenericCardIcon.js.map +1 -1
  623. package/dist/components/GenericCard/GenericCardTitle.js.map +1 -1
  624. package/dist/components/GenericCard/LabelMaybeWithIcon.js.map +1 -1
  625. package/dist/components/GenericCard/Linkify.js.map +1 -1
  626. package/dist/components/GenericCard/PortalDOI/PortalDOI.js.map +1 -1
  627. package/dist/components/GenericCard/PortalDOI/PortalDOIUtils.js.map +1 -1
  628. package/dist/components/GenericCard/SynapseCardLabel.js +1 -1
  629. package/dist/components/GenericCard/SynapseCardLabel.js.map +1 -1
  630. package/dist/components/GenericCard/TableRowGenericCard.d.ts.map +1 -1
  631. package/dist/components/GenericCard/TableRowGenericCard.js +33 -25
  632. package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
  633. package/dist/components/GenericCard/useResolvedSynapseEntity.js.map +1 -1
  634. package/dist/components/Goals/Goals.Desktop.js.map +1 -1
  635. package/dist/components/Goals/Goals.Mobile.js.map +1 -1
  636. package/dist/components/Goals/Goals.js +25 -27
  637. package/dist/components/Goals/Goals.js.map +1 -1
  638. package/dist/components/GoalsV2/GoalsV2.Desktop.js.map +1 -1
  639. package/dist/components/GoalsV2/GoalsV2.Mobile.js.map +1 -1
  640. package/dist/components/GoalsV2/GoalsV2.js +14 -16
  641. package/dist/components/GoalsV2/GoalsV2.js.map +1 -1
  642. package/dist/components/GoalsV3/GoalsV3.Desktop.js.map +1 -1
  643. package/dist/components/GoalsV3/GoalsV3.Mobile.js.map +1 -1
  644. package/dist/components/GoalsV3/GoalsV3.js +14 -16
  645. package/dist/components/GoalsV3/GoalsV3.js.map +1 -1
  646. package/dist/components/GoogleAnalytics/GoogleAnalytics.js.map +1 -1
  647. package/dist/components/GoogleMap/GoogleMap.js.map +1 -1
  648. package/dist/components/GoogleMap/SynapseUserMarker.js.map +1 -1
  649. package/dist/components/HasAccess/AccessIcon.js +10 -10
  650. package/dist/components/HasAccess/AccessIcon.js.map +1 -1
  651. package/dist/components/HasAccess/HasAccessV2.js.map +1 -1
  652. package/dist/components/HasAccess/useHasAccess.js.map +1 -1
  653. package/dist/components/HeaderCard/HeaderCardV2.js.map +1 -1
  654. package/dist/components/HeaderCard.js.map +1 -1
  655. package/dist/components/HelpPopover/HelpPopover.js.map +1 -1
  656. package/dist/components/HexGrid/HexGrid.js.map +1 -1
  657. package/dist/components/IDUReport/IDUReport.js.map +1 -1
  658. package/dist/components/IDUReport/IDUReportSubmissionInfo.js.map +1 -1
  659. package/dist/components/Icon/Icon.js.map +1 -1
  660. package/dist/components/IconList.js.map +1 -1
  661. package/dist/components/IconSvg/IconSvg.js.map +1 -1
  662. package/dist/components/IconSvgButton.js.map +1 -1
  663. package/dist/components/ImageCardGridWithLinks/ImageCardGridWithLinks.js +7 -9
  664. package/dist/components/ImageCardGridWithLinks/ImageCardGridWithLinks.js.map +1 -1
  665. package/dist/components/ImageFromSynapseTable.js.map +1 -1
  666. package/dist/components/InteractiveCopyIdsIcon.js.map +1 -1
  667. package/dist/components/JSONArrayEditor/JSONArrayEditor.js.map +1 -1
  668. package/dist/components/JSONArrayEditor/JSONArrayEditorModal.js.map +1 -1
  669. package/dist/components/JSONArrayEditor/useParseCsv.js.map +1 -1
  670. package/dist/components/JsonLdScript.js.map +1 -1
  671. package/dist/components/JsonSchemaForm/JsonSchemaForm.js.map +1 -1
  672. package/dist/components/JsonSchemaForm/templates/ArrayFieldDescriptionTemplate.js.map +1 -1
  673. package/dist/components/JsonSchemaForm/templates/ArrayFieldItemButtonTemplate.js.map +1 -1
  674. package/dist/components/JsonSchemaForm/templates/ArrayFieldItemTemplate.js.map +1 -1
  675. package/dist/components/JsonSchemaForm/templates/ArrayFieldTemplate.js.map +1 -1
  676. package/dist/components/JsonSchemaForm/templates/ArrayFieldTitleTemplate.js.map +1 -1
  677. package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.js.map +1 -1
  678. package/dist/components/JsonSchemaForm/templates/ButtonTemplate.js.map +1 -1
  679. package/dist/components/JsonSchemaForm/templates/DescriptionFieldTemplate.js.map +1 -1
  680. package/dist/components/JsonSchemaForm/templates/ErrorListTemplate.js.map +1 -1
  681. package/dist/components/JsonSchemaForm/templates/FieldDescriptionTable.js.map +1 -1
  682. package/dist/components/JsonSchemaForm/templates/FieldErrorTemplate.js.map +1 -1
  683. package/dist/components/JsonSchemaForm/templates/FieldTemplate.js.map +1 -1
  684. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js.map +1 -1
  685. package/dist/components/JsonSchemaForm/widgets/BooleanWidget.js.map +1 -1
  686. package/dist/components/JsonSchemaForm/widgets/DateTimeWidget.js.map +1 -1
  687. package/dist/components/JsonSchemaForm/widgets/SelectWidget.js.map +1 -1
  688. package/dist/components/LoadingScreen/LoadingScreen.js.map +1 -1
  689. package/dist/components/MailchimpSubscribeSection/MailchimpSubscribeSection.js.map +1 -1
  690. package/dist/components/Markdown/GovernanceMarkdownGithub.js.map +1 -1
  691. package/dist/components/Markdown/MarkdownCollapse.js.map +1 -1
  692. package/dist/components/Markdown/MarkdownEditor.js.map +1 -1
  693. package/dist/components/Markdown/MarkdownGithub.js.map +1 -1
  694. package/dist/components/Markdown/MarkdownPopover.js.map +1 -1
  695. package/dist/components/Markdown/MarkdownSynapse.d.ts.map +1 -1
  696. package/dist/components/Markdown/MarkdownSynapse.js +75 -106
  697. package/dist/components/Markdown/MarkdownSynapse.js.map +1 -1
  698. package/dist/components/Markdown/MarkdownUtils.d.ts +14 -4
  699. package/dist/components/Markdown/MarkdownUtils.d.ts.map +1 -1
  700. package/dist/components/Markdown/MarkdownUtils.js +38 -37
  701. package/dist/components/Markdown/MarkdownUtils.js.map +1 -1
  702. package/dist/components/Markdown/MarkdownWidget.js.map +1 -1
  703. package/dist/components/Markdown/SynapseWikiContext.js.map +1 -1
  704. package/dist/components/Markdown/UserMentionModal.js.map +1 -1
  705. package/dist/components/Markdown/widget/Bookmarks.js.map +1 -1
  706. package/dist/components/Markdown/widget/MarkdownButton.js.map +1 -1
  707. package/dist/components/Markdown/widget/MarkdownEntityPreview.js.map +1 -1
  708. package/dist/components/Markdown/widget/MarkdownIDUReport.js.map +1 -1
  709. package/dist/components/Markdown/widget/MarkdownProvenanceGraph.js.map +1 -1
  710. package/dist/components/Markdown/widget/MarkdownSynapseImage.js.map +1 -1
  711. package/dist/components/Markdown/widget/MarkdownSynapsePlot.js.map +1 -1
  712. package/dist/components/Markdown/widget/MarkdownSynapseTable.js.map +1 -1
  713. package/dist/components/Markdown/widget/MarkdownTableOfContents.js.map +1 -1
  714. package/dist/components/Markdown/widget/MarkdownUserOrTeamBadge.js.map +1 -1
  715. package/dist/components/Markdown/widget/MarkdownVideo.js.map +1 -1
  716. package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js.map +1 -1
  717. package/dist/components/ModalDownload/ModalDownload.FormSchema.js.map +1 -1
  718. package/dist/components/ModalDownload/ModalDownload.js.map +1 -1
  719. package/dist/components/MuiContainer.js.map +1 -1
  720. package/dist/components/OAuthClientAclEditor/OAuthAclEditorModal.js.map +1 -1
  721. package/dist/components/OAuthClientAclEditor/OAuthClientAclEditor.js.map +1 -1
  722. package/dist/components/OAuthClientManagement/CreateOAuthClient.js.map +1 -1
  723. package/dist/components/OAuthClientManagement/OAuthManagement.js.map +1 -1
  724. package/dist/components/OrientationBanner/OrientationBanner.js.map +1 -1
  725. package/dist/components/PageProgress/PageProgress.js.map +1 -1
  726. package/dist/components/Plot/BarPlot.js.map +1 -1
  727. package/dist/components/Plot/DotPlot.js.map +1 -1
  728. package/dist/components/Plot/Plot.d.ts +12 -1
  729. package/dist/components/Plot/Plot.d.ts.map +1 -1
  730. package/dist/components/Plot/Plot.js +5 -1
  731. package/dist/components/Plot/Plot.js.map +1 -1
  732. package/dist/components/Plot/PlotPanelHeader.js.map +1 -1
  733. package/dist/components/Plot/SynapsePlot.js.map +1 -1
  734. package/dist/components/Plot/SynapseSankeyPlot.css +1 -0
  735. package/dist/components/Plot/SynapseSankeyPlot.d.ts +54 -0
  736. package/dist/components/Plot/SynapseSankeyPlot.d.ts.map +1 -0
  737. package/dist/components/Plot/SynapseSankeyPlot.js +359 -0
  738. package/dist/components/Plot/SynapseSankeyPlot.js.map +1 -0
  739. package/dist/components/Plot/SynapseSankeyPlot.module.js +15 -0
  740. package/dist/components/Plot/SynapseSankeyPlot.module.js.map +1 -0
  741. package/dist/components/Plot/SynapseSankeyPlot.module.scss +63 -0
  742. package/dist/components/Plot/ThemesPlot.js.map +1 -1
  743. package/dist/components/Plot/UpsetPlot.js.map +1 -1
  744. package/dist/components/Plot/index.d.ts +3 -1
  745. package/dist/components/Plot/index.d.ts.map +1 -1
  746. package/dist/components/Plot/index.js +2 -1
  747. package/dist/components/Plot/safe-react-plotly-factory.js.map +1 -1
  748. package/dist/components/PortalAclEditor/PortalAclEditor.js.map +1 -1
  749. package/dist/components/PortalAclEditor/PortalAclEditorModal.js.map +1 -1
  750. package/dist/components/PortalFeatureHighlights/PortalFeatureHighlights.js.map +1 -1
  751. package/dist/components/PortalFeaturedPartners/PortalFeaturedPartners.js +4 -6
  752. package/dist/components/PortalFeaturedPartners/PortalFeaturedPartners.js.map +1 -1
  753. package/dist/components/PortalHomePageHeader/PortalHomePageHeader.js.map +1 -1
  754. package/dist/components/PortalList/CreatePortalModal.js.map +1 -1
  755. package/dist/components/PortalList/PortalCard.js.map +1 -1
  756. package/dist/components/PortalList/PortalList.js.map +1 -1
  757. package/dist/components/PortalSectionHeader/PortalSectionHeader.js.map +1 -1
  758. package/dist/components/ProgrammaticInstructionsModal/ProgrammaticInstructionsModal.js +69 -69
  759. package/dist/components/ProgrammaticInstructionsModal/ProgrammaticInstructionsModal.js.map +1 -1
  760. package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js.map +1 -1
  761. package/dist/components/Programs/Programs.Desktop.js.map +1 -1
  762. package/dist/components/Programs/Programs.Mobile.js.map +1 -1
  763. package/dist/components/Programs/Programs.js.map +1 -1
  764. package/dist/components/ProjectStorage/ProjectDataAvailability.js.map +1 -1
  765. package/dist/components/ProvenanceGraph/ActivityNodeLabel.js.map +1 -1
  766. package/dist/components/ProvenanceGraph/EntityNodeLabel.js.map +1 -1
  767. package/dist/components/ProvenanceGraph/EntityPlaceholderNodeLabel.js.map +1 -1
  768. package/dist/components/ProvenanceGraph/ExpandGraphNodeLabel.js.map +1 -1
  769. package/dist/components/ProvenanceGraph/ExternalGraphNodeLabel.js.map +1 -1
  770. package/dist/components/ProvenanceGraph/ProvenanceEntityIcon.js.map +1 -1
  771. package/dist/components/ProvenanceGraph/ProvenanceExternalIcon.js.map +1 -1
  772. package/dist/components/ProvenanceGraph/ProvenanceGraph.js.map +1 -1
  773. package/dist/components/ProvenanceGraph/ProvenanceGraphUtils.js.map +1 -1
  774. package/dist/components/ProvenanceGraph/ProvenanceUtils.js +13 -13
  775. package/dist/components/ProvenanceGraph/ProvenanceUtils.js.map +1 -1
  776. package/dist/components/ProvenanceGraph/UndefinedNodeLabel.js.map +1 -1
  777. package/dist/components/QueryContext/QueryContext.js.map +1 -1
  778. package/dist/components/QueryCount/QueryCount.js.map +1 -1
  779. package/dist/components/QueryCountButton/QueryCountButton.js.map +1 -1
  780. package/dist/components/QuerySortSelector.js.map +1 -1
  781. package/dist/components/QueryVisualizationWrapper/NoContentPlaceholder.js.map +1 -1
  782. package/dist/components/QueryVisualizationWrapper/QueryVisualizationContext.js.map +1 -1
  783. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js.map +1 -1
  784. package/dist/components/QueryWrapper/QueryWrapper.js +27 -27
  785. package/dist/components/QueryWrapper/QueryWrapper.js.map +1 -1
  786. package/dist/components/QueryWrapper/QueryWrapperLoadingScreen.js.map +1 -1
  787. package/dist/components/QueryWrapper/TableQueryUseQueryOptions.js.map +1 -1
  788. package/dist/components/QueryWrapper/TableRowSelectionState.js.map +1 -1
  789. package/dist/components/QueryWrapper/ViewMoreQueryResultsButton.js.map +1 -1
  790. package/dist/components/QueryWrapper/generateEncodedPathAndQueryForSelectedFacetURL.js.map +1 -1
  791. package/dist/components/QueryWrapper/useComputeRowSelectionPrimaryKey.js.map +1 -1
  792. package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.js.map +1 -1
  793. package/dist/components/QueryWrapper/useGetQueryMetadata.js.map +1 -1
  794. package/dist/components/QueryWrapper/useHasFacetedSelectColumn.js.map +1 -1
  795. package/dist/components/QueryWrapper/useOnQueryDataChange.js.map +1 -1
  796. package/dist/components/QueryWrapperErrorBoundary.js.map +1 -1
  797. package/dist/components/QueryWrapperPlotNav/LastUpdatedOn.js.map +1 -1
  798. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
  799. package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.js.map +1 -1
  800. package/dist/components/QueryWrapperPlotNav/RowSetView.js.map +1 -1
  801. package/dist/components/QueryWrapperPlotNav/UseRowSet.js.map +1 -1
  802. package/dist/components/RORInstitutionField/RORInstitutionField.js.map +1 -1
  803. package/dist/components/RecentPublicationsGrid/RecentPublicationsGrid.js +6 -8
  804. package/dist/components/RecentPublicationsGrid/RecentPublicationsGrid.js.map +1 -1
  805. package/dist/components/RegisterPageLogoutPrompt/RegisterPageLogoutPrompt.js.map +1 -1
  806. package/dist/components/ReleaseCard/ReleaseCard.js.map +1 -1
  807. package/dist/components/ReleaseCard/ReleaseCardLarge.js.map +1 -1
  808. package/dist/components/ReleaseCard/ReleaseCardMedium.js.map +1 -1
  809. package/dist/components/ReleaseCard/ReleaseCardUtils.js.map +1 -1
  810. package/dist/components/RenderIfInView/RenderIfInView.js.map +1 -1
  811. package/dist/components/ResizableContainer/ResizableContainer.js.map +1 -1
  812. package/dist/components/ResizableContainer/hooks/useResizable.js.map +1 -1
  813. package/dist/components/Resources/Resources.Desktop.js.map +1 -1
  814. package/dist/components/Resources/Resources.Mobile.js.map +1 -1
  815. package/dist/components/Resources/Resources.js +8 -11
  816. package/dist/components/Resources/Resources.js.map +1 -1
  817. package/dist/components/RowDataTable/RowDataTable.js.map +1 -1
  818. package/dist/components/RowDataTable/RowDataTableWithQuery.js.map +1 -1
  819. package/dist/components/RssFeedCards/RssFeedCards.js.map +1 -1
  820. package/dist/components/SageResourcesPopover/SageResourcesPopover.js.map +1 -1
  821. package/dist/components/SchemaDrivenAnnotationEditor/AnnotationEditorUtils.js.map +1 -1
  822. package/dist/components/SchemaDrivenAnnotationEditor/SchemaDrivenAnnotationEditor.js.map +1 -1
  823. package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.js.map +1 -1
  824. package/dist/components/SchemaDrivenAnnotationEditor/field/SynapseAnnotationsRJSFObjectField.js.map +1 -1
  825. package/dist/components/SchemaDrivenAnnotationEditor/template/AdditionalPropertyContext.js.map +1 -1
  826. package/dist/components/SchemaDrivenAnnotationEditor/template/ObjectFieldTemplate.js.map +1 -1
  827. package/dist/components/SchemaDrivenAnnotationEditor/template/SynapseAnnotationsWrapIfAdditionalTemplate.js.map +1 -1
  828. package/dist/components/SchemaDrivenAnnotationEditor/widget/TextWidget.js.map +1 -1
  829. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts +13 -12
  830. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts.map +1 -1
  831. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js +88 -77
  832. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
  833. package/dist/components/SearchQueryWrapper/SearchQueryWrapper.js.map +1 -1
  834. package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.js.map +1 -1
  835. package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js.map +1 -1
  836. package/dist/components/SetBasicAccessRequirementFields/AccessRequirementTextInstructions.js.map +1 -1
  837. package/dist/components/SetBasicAccessRequirementFields/AccessRequirementWikiInstructions.js.map +1 -1
  838. package/dist/components/SetBasicAccessRequirementFields/AccessorRequirements.js.map +1 -1
  839. package/dist/components/SetBasicAccessRequirementFields/GovernanceUtils.js.map +1 -1
  840. package/dist/components/SetBasicAccessRequirementFields/SetBasicAccessRequirementFields.js.map +1 -1
  841. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js.map +1 -1
  842. package/dist/components/ShareThisPage/ShareThisPage.js.map +1 -1
  843. package/dist/components/ShowMore/ShowMore.js.map +1 -1
  844. package/dist/components/SignInButton.js.map +1 -1
  845. package/dist/components/SignInRequiredModal/SignInRequiredModal.js.map +1 -1
  846. package/dist/components/Skeleton/SkeletonButton.js.map +1 -1
  847. package/dist/components/Skeleton/SkeletonInlineBlock.js.map +1 -1
  848. package/dist/components/Skeleton/SkeletonParagraph.js.map +1 -1
  849. package/dist/components/Skeleton/SkeletonTable.js.map +1 -1
  850. package/dist/components/SmartLink/SmartButton.js.map +1 -1
  851. package/dist/components/SmartLink/SmartLink.js.map +1 -1
  852. package/dist/components/SmartLink/useSmartLink.js.map +1 -1
  853. package/dist/components/SourceAppImage.js.map +1 -1
  854. package/dist/components/SpinnerButton/SpinnerButton.js.map +1 -1
  855. package/dist/components/SqlDefinedTableEditor/SqlDefinedTableEditor.js.map +1 -1
  856. package/dist/components/SqlDefinedTableEditor/SqlDefinedTableEditorModal.js.map +1 -1
  857. package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.js.map +1 -1
  858. package/dist/components/StatisticsPlot.js.map +1 -1
  859. package/dist/components/StepperDialog/StepperDialog.js.map +1 -1
  860. package/dist/components/StorybookComponentWrapper.js.map +1 -1
  861. package/dist/components/SubmissionViewScopeEditor/SubmissionViewScopeEditor.js.map +1 -1
  862. package/dist/components/SubmissionViewScopeEditor/SubmissionViewScopeEditorModal.js.map +1 -1
  863. package/dist/components/SubscriptionPage/ForumTopic.js.map +1 -1
  864. package/dist/components/SubscriptionPage/SubscriptionItem.js.map +1 -1
  865. package/dist/components/SubscriptionPage/SubscriptionPage.js.map +1 -1
  866. package/dist/components/SubscriptionPage/ThreadTopic.js.map +1 -1
  867. package/dist/components/SubscriptionPage/Topic.js.map +1 -1
  868. package/dist/components/SubsectionRowRenderer/SubsectionRowRenderer.js.map +1 -1
  869. package/dist/components/SustainabilityScorecard/Dial.js.map +1 -1
  870. package/dist/components/SustainabilityScorecard/DialLayout.js.map +1 -1
  871. package/dist/components/SustainabilityScorecard/SustainabilityScorecard.js.map +1 -1
  872. package/dist/components/SustainabilityScorecard/SustainabilityScorecardSummary.js.map +1 -1
  873. package/dist/components/SustainabilityScorecard/SustainabilityScorecardUtils.js.map +1 -1
  874. package/dist/components/SynapseChat/AccessLevelMenu.js.map +1 -1
  875. package/dist/components/SynapseChat/GridAgentChat.js.map +1 -1
  876. package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
  877. package/dist/components/SynapseChat/SynapseChatDialog.js.map +1 -1
  878. package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
  879. package/dist/components/SynapseChat/SynapseChatMessage.js.map +1 -1
  880. package/dist/components/SynapseChat/SynapsePortalChatDialog.js.map +1 -1
  881. package/dist/components/SynapseChat/extractMessageFromTraceEvent.js.map +1 -1
  882. package/dist/components/SynapseChat/useChatState.js.map +1 -1
  883. package/dist/components/SynapseFooter/SynapseFooter.js.map +1 -1
  884. package/dist/components/SynapseFooter/SynapseLinksColumn.js.map +1 -1
  885. package/dist/components/SynapseForm/DataDebug.js.map +1 -1
  886. package/dist/components/SynapseForm/Header.js.map +1 -1
  887. package/dist/components/SynapseForm/NavButtons.js.map +1 -1
  888. package/dist/components/SynapseForm/StepsSideNav.js.map +1 -1
  889. package/dist/components/SynapseForm/SummaryTable.js.map +1 -1
  890. package/dist/components/SynapseForm/SynapseForm.js.map +1 -1
  891. package/dist/components/SynapseForm/SynapseFormCheckboxWidget.js.map +1 -1
  892. package/dist/components/SynapseForm/SynapseFormCheckboxesWidget.js.map +1 -1
  893. package/dist/components/SynapseForm/SynapseFormRadioWidget.js.map +1 -1
  894. package/dist/components/SynapseForm/SynapseFormSubmissionGrid.js.map +1 -1
  895. package/dist/components/SynapseForm/SynapseFormUtils.js.map +1 -1
  896. package/dist/components/SynapseForm/SynapseFormWrapper.js.map +1 -1
  897. package/dist/components/SynapseForm/WarningDialog.js.map +1 -1
  898. package/dist/components/SynapseForm/types.js.map +1 -1
  899. package/dist/components/SynapseForm/useGetFormPropsFromSearchParams.js.map +1 -1
  900. package/dist/components/SynapseHomepageV2/FloatingBlobsBackground.js.map +1 -1
  901. package/dist/components/SynapseHomepageV2/HomepageStyles.js.map +1 -1
  902. package/dist/components/SynapseHomepageV2/SynapseByTheNumbers.js.map +1 -1
  903. package/dist/components/SynapseHomepageV2/SynapseByTheNumbersItem.js.map +1 -1
  904. package/dist/components/SynapseHomepageV2/SynapseFeatureItem.js.map +1 -1
  905. package/dist/components/SynapseHomepageV2/SynapseFeaturedDatasetItem.js.map +1 -1
  906. package/dist/components/SynapseHomepageV2/SynapseFeaturedDatasets.js.map +1 -1
  907. package/dist/components/SynapseHomepageV2/SynapseFeatures.js.map +1 -1
  908. package/dist/components/SynapseHomepageV2/SynapseHomepageChatSearch.js +18 -21
  909. package/dist/components/SynapseHomepageV2/SynapseHomepageChatSearch.js.map +1 -1
  910. package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.js.map +1 -1
  911. package/dist/components/SynapseHomepageV2/SynapseHomepageSearch.js.map +1 -1
  912. package/dist/components/SynapseHomepageV2/SynapseHomepageV2.js.map +1 -1
  913. package/dist/components/SynapseHomepageV2/SynapseHotdrops.js.map +1 -1
  914. package/dist/components/SynapseHomepageV2/SynapseHotdropsItem.js.map +1 -1
  915. package/dist/components/SynapseHomepageV2/SynapseInAction.js.map +1 -1
  916. package/dist/components/SynapseHomepageV2/SynapseInActionItem.js.map +1 -1
  917. package/dist/components/SynapseHomepageV2/SynapsePartners.js.map +1 -1
  918. package/dist/components/SynapseHomepageV2/SynapsePlan.js.map +1 -1
  919. package/dist/components/SynapseHomepageV2/SynapsePlanContent.js.map +1 -1
  920. package/dist/components/SynapseHomepageV2/SynapsePlans.js.map +1 -1
  921. package/dist/components/SynapseHomepageV2/SynapsePlansPage.js.map +1 -1
  922. package/dist/components/SynapseHomepageV2/SynapseSearchChips.js.map +1 -1
  923. package/dist/components/SynapseHomepageV2/SynapseTrendingProjects.js.map +1 -1
  924. package/dist/components/SynapseHomepageV2/SynapseTrendingProjectsItem.js.map +1 -1
  925. package/dist/components/SynapseHomepageV2/WordPressNews.js.map +1 -1
  926. package/dist/components/SynapseHomepageV2/WordPressNewsItem.js.map +1 -1
  927. package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js +78 -78
  928. package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js.map +1 -1
  929. package/dist/components/SynapsePortalBanners/SynapsePortalBanners.js.map +1 -1
  930. package/dist/components/SynapseSearchPageResults/HasAccessChip.js.map +1 -1
  931. package/dist/components/SynapseSearchPageResults/HighlightedTypography.js.map +1 -1
  932. package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanel.js.map +1 -1
  933. package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.js.map +1 -1
  934. package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.js.map +1 -1
  935. package/dist/components/SynapseSearchPageResults/SynapseSearchPage.js.map +1 -1
  936. package/dist/components/SynapseSearchPageResults/SynapseSearchPageResults.js.map +1 -1
  937. package/dist/components/SynapseSearchPageResults/SynapseSearchPageRouter.js.map +1 -1
  938. package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.js.map +1 -1
  939. package/dist/components/SynapseSearchPageResults/chipStyles.js.map +1 -1
  940. package/dist/components/SynapseTable/CustomControls/CustomControlButton.js.map +1 -1
  941. package/dist/components/SynapseTable/CustomControls/CustomControlPanel.js.map +1 -1
  942. package/dist/components/SynapseTable/CustomControls/CustomControls.js.map +1 -1
  943. package/dist/components/SynapseTable/EntityIDColumnCopyIcon.js.map +1 -1
  944. package/dist/components/SynapseTable/ExpandCollapseButton.js.map +1 -1
  945. package/dist/components/SynapseTable/ExpandableTableDataCell.js.map +1 -1
  946. package/dist/components/SynapseTable/NoContentAvailable.js.map +1 -1
  947. package/dist/components/SynapseTable/NoContentPlaceholderType.js.map +1 -1
  948. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js +4 -4
  949. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js.map +1 -1
  950. package/dist/components/SynapseTable/RowSelection/RowSelectionUI.js.map +1 -1
  951. package/dist/components/SynapseTable/SearchResultsNotFound.js.map +1 -1
  952. package/dist/components/SynapseTable/SearchV2.js.map +1 -1
  953. package/dist/components/SynapseTable/SqlEditor.js.map +1 -1
  954. package/dist/components/SynapseTable/SynapseTable.js.map +1 -1
  955. package/dist/components/SynapseTable/SynapseTableCell/EntityIdList.js.map +1 -1
  956. package/dist/components/SynapseTable/SynapseTableCell/EvaluationIdRenderer.js.map +1 -1
  957. package/dist/components/SynapseTable/SynapseTableCell/JSON/ComplexJSONRenderer.js.map +1 -1
  958. package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONArrayRenderer.js.map +1 -1
  959. package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONObjectRenderer.js.map +1 -1
  960. package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONPrimitiveRenderer.js.map +1 -1
  961. package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONRendererUtils.js.map +1 -1
  962. package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONTableCellRenderer.js.map +1 -1
  963. package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.js.map +1 -1
  964. package/dist/components/SynapseTable/SynapseTableCell/UserIdList.js.map +1 -1
  965. package/dist/components/SynapseTable/SynapseTableConstants.js.map +1 -1
  966. package/dist/components/SynapseTable/SynapseTableContext.js.map +1 -1
  967. package/dist/components/SynapseTable/SynapseTableRenderers.js.map +1 -1
  968. package/dist/components/SynapseTable/SynapseTableUtils.js.map +1 -1
  969. package/dist/components/SynapseTable/TableIsEmpty.js.map +1 -1
  970. package/dist/components/SynapseTable/TablePagination.js.map +1 -1
  971. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.d.ts.map +1 -1
  972. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js +63 -74
  973. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js.map +1 -1
  974. package/dist/components/SynapseTable/TopLevelControls/TopLevelControlsUtils.js.map +1 -1
  975. package/dist/components/SynapseTable/datasets/DatasetEditorCheckboxCell.js.map +1 -1
  976. package/dist/components/SynapseTable/datasets/DatasetEditorUtils.js.map +1 -1
  977. package/dist/components/SynapseTable/datasets/DatasetEditorVersionCell.js.map +1 -1
  978. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +131 -133
  979. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js.map +1 -1
  980. package/dist/components/SynapseTable/datasets/EntityFetchErrorCell.js.map +1 -1
  981. package/dist/components/SynapseTable/export/ADDiscoveryPortalInstructions.js.map +1 -1
  982. package/dist/components/SynapseTable/export/ExportToAnalysisPlatformDialog.js +48 -51
  983. package/dist/components/SynapseTable/export/ExportToAnalysisPlatformDialog.js.map +1 -1
  984. package/dist/components/SynapseTable/export/ExternalAnalysisPlatformInstructions.js.map +1 -1
  985. package/dist/components/SynapseTable/export/ExternalAnalysisPlatformsConstants.js.map +1 -1
  986. package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.js.map +1 -1
  987. package/dist/components/SynapseTable/export/ExternalPlatformDisclaimer.js.map +1 -1
  988. package/dist/components/SynapseTable/table-top/ColumnSelection.js.map +1 -1
  989. package/dist/components/SynapseTable/table-top/DownloadLoginModal.js.map +1 -1
  990. package/dist/components/SynapseTable/table-top/DownloadOptions.js.map +1 -1
  991. package/dist/components/SynapseTable/usePrefetchTableData.js.map +1 -1
  992. package/dist/components/SynapseTable/useTableSort.js.map +1 -1
  993. package/dist/components/SystemUseNotification/SystemUseNotification.js.map +1 -1
  994. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.d.ts.map +1 -1
  995. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +72 -68
  996. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js.map +1 -1
  997. package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/DefaultValueField.js.map +1 -1
  998. package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/FieldWithRecommendedMinimum.js.map +1 -1
  999. package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/MultiValueField.js.map +1 -1
  1000. package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js.map +1 -1
  1001. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditor.js.map +1 -1
  1002. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorTestUtils.js.map +1 -1
  1003. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.d.ts +27 -1
  1004. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.d.ts.map +1 -1
  1005. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js +47 -36
  1006. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js.map +1 -1
  1007. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +10 -10
  1008. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
  1009. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.js.map +1 -1
  1010. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormReducer.d.ts +12 -12
  1011. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormReducer.js.map +1 -1
  1012. package/dist/components/TableColumnSchemaEditor/Validators/BooleanSchema.d.ts +4 -1
  1013. package/dist/components/TableColumnSchemaEditor/Validators/BooleanSchema.d.ts.map +1 -1
  1014. package/dist/components/TableColumnSchemaEditor/Validators/BooleanSchema.js.map +1 -1
  1015. package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.d.ts +167 -517
  1016. package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.d.ts.map +1 -1
  1017. package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.js +65 -65
  1018. package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.js.map +1 -1
  1019. package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.d.ts +1 -1
  1020. package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.d.ts.map +1 -1
  1021. package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.js.map +1 -1
  1022. package/dist/components/TableColumnSchemaEditor/Validators/DefaultValueValidator.js.map +1 -1
  1023. package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.d.ts +1 -1
  1024. package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.d.ts.map +1 -1
  1025. package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.js +6 -13
  1026. package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.js.map +1 -1
  1027. package/dist/components/TableColumnSchemaEditor/Validators/EntityIdSchema.d.ts +1 -1
  1028. package/dist/components/TableColumnSchemaEditor/Validators/EntityIdSchema.d.ts.map +1 -1
  1029. package/dist/components/TableColumnSchemaEditor/Validators/EntityIdSchema.js.map +1 -1
  1030. package/dist/components/TableColumnSchemaEditor/Validators/EnumValuesValidator.js.map +1 -1
  1031. package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.d.ts +1 -1
  1032. package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.d.ts.map +1 -1
  1033. package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.js +2 -2
  1034. package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.js.map +1 -1
  1035. package/dist/components/TableColumnSchemaEditor/Validators/OptionalStringSchema.d.ts +1 -1
  1036. package/dist/components/TableColumnSchemaEditor/Validators/OptionalStringSchema.d.ts.map +1 -1
  1037. package/dist/components/TableColumnSchemaEditor/Validators/OptionalStringSchema.js.map +1 -1
  1038. package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.d.ts +2 -2
  1039. package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.d.ts.map +1 -1
  1040. package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.js +15 -16
  1041. package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.js.map +1 -1
  1042. package/dist/components/TableFeedCards/TableFeedCards.js.map +1 -1
  1043. package/dist/components/TanStackTable/ColumnHeader.js.map +1 -1
  1044. package/dist/components/TanStackTable/ColumnHeaderEnumFilter.js.map +1 -1
  1045. package/dist/components/TanStackTable/StyledTanStackTable.js.map +1 -1
  1046. package/dist/components/TanStackTable/StyledVirtualTanStackTable.js.map +1 -1
  1047. package/dist/components/TanStackTable/TableBody.js.map +1 -1
  1048. package/dist/components/TanStackTable/TableCellRenderer.js.map +1 -1
  1049. package/dist/components/TanStackTable/TanStackTableUtils.js.map +1 -1
  1050. package/dist/components/TeamBadge.js.map +1 -1
  1051. package/dist/components/TeamSubjectsSelector/TeamBadgeOrError.js.map +1 -1
  1052. package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.js.map +1 -1
  1053. package/dist/components/TemplateComponent.js.map +1 -1
  1054. package/dist/components/TemporaryBanner/TemporaryBanner.js.map +1 -1
  1055. package/dist/components/TermsAndConditions/TermsAndConditions.js.map +1 -1
  1056. package/dist/components/TermsAndConditions/TermsAndConditionsItem.js.map +1 -1
  1057. package/dist/components/TextField/TextField.js.map +1 -1
  1058. package/dist/components/TextField/TextFieldWithWordLimit.js.map +1 -1
  1059. package/dist/components/TextToComponentCollapse.js.map +1 -1
  1060. package/dist/components/ThemeGallery/ThemeGallery.js.map +1 -1
  1061. package/dist/components/TimelinePlot/TimelineLegendItem.js.map +1 -1
  1062. package/dist/components/TimelinePlot/TimelinePhase.js.map +1 -1
  1063. package/dist/components/TimelinePlot/TimelinePlot.js.map +1 -1
  1064. package/dist/components/TimelinePlot/TimelinePlotSpeciesSelector.js.map +1 -1
  1065. package/dist/components/TimelinePlot/phasesQueryResponseData.js.map +1 -1
  1066. package/dist/components/ToastMessage/ToastMessage.js.map +1 -1
  1067. package/dist/components/TotalQueryResults.js.map +1 -1
  1068. package/dist/components/UserCard/Avatar.js.map +1 -1
  1069. package/dist/components/UserCard/UserBadge.js.map +1 -1
  1070. package/dist/components/UserCard/UserCard.js.map +1 -1
  1071. package/dist/components/UserCard/UserCardContextMenu.js.map +1 -1
  1072. package/dist/components/UserCard/UserCardLarge.js.map +1 -1
  1073. package/dist/components/UserCard/UserCardMedium.js.map +1 -1
  1074. package/dist/components/UserCardList/UserCardList.js.map +1 -1
  1075. package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.Desktop.js.map +1 -1
  1076. package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.Mobile.js.map +1 -1
  1077. package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.js.map +1 -1
  1078. package/dist/components/UserCardList/UserCardListRotate.js.map +1 -1
  1079. package/dist/components/UserOrTeamBadge/UserOrTeamBadge.js.map +1 -1
  1080. package/dist/components/UserOrTeamBadge/useUserOrTeam.js.map +1 -1
  1081. package/dist/components/UserProfileLinks/UserChallenges.js.map +1 -1
  1082. package/dist/components/UserProfileLinks/UserProfileLinks.js.map +1 -1
  1083. package/dist/components/UserProfileLinks/UserProjects.js.map +1 -1
  1084. package/dist/components/UserProfileLinks/UserTeams.js.map +1 -1
  1085. package/dist/components/UserSearchBox/UserSearchBox.js.map +1 -1
  1086. package/dist/components/Webhook/CreateWebhookModal.js.map +1 -1
  1087. package/dist/components/Webhook/WebhookDashboard.js.map +1 -1
  1088. package/dist/components/Webhook/WebhookVerificationDialog.js.map +1 -1
  1089. package/dist/components/WikiMarkdownEditor/WikiMarkdownEditor.js.map +1 -1
  1090. package/dist/components/WikiMarkdownEditorButton/WikiMarkdownEditorButton.js.map +1 -1
  1091. package/dist/components/WizardChoiceButton/WizardChoiceButton.js.map +1 -1
  1092. package/dist/components/WizardChoiceButton/WizardChoiceButtonDescription.js.map +1 -1
  1093. package/dist/components/WizardChoiceButton/WizardChoiceButtonGroup.js.map +1 -1
  1094. package/dist/components/WordPress/WordPressLatestPostChip.js.map +1 -1
  1095. package/dist/components/WordPress/useWordPressCategories.js.map +1 -1
  1096. package/dist/components/WordPress/useWordPressPosts.js.map +1 -1
  1097. package/dist/components/dataaccess/AccessApprovalsTable.js.map +1 -1
  1098. package/dist/components/dataaccess/AccessHistoryDashboard.js.map +1 -1
  1099. package/dist/components/dataaccess/AccessRequestSubmissionTable.js.map +1 -1
  1100. package/dist/components/dataaccess/AccessRequirementDashboard.js.map +1 -1
  1101. package/dist/components/dataaccess/AccessRequirementSearchBox/AccessRequirementSearchBox.js.map +1 -1
  1102. package/dist/components/dataaccess/AccessRequirementTable.js.map +1 -1
  1103. package/dist/components/dataaccess/AccessSubmissionDashboard.js.map +1 -1
  1104. package/dist/components/dataaccess/RejectDataAccessRequestModal.js.map +1 -1
  1105. package/dist/components/dataaccess/RejectProfileValidationRequestModal.js.map +1 -1
  1106. package/dist/components/dataaccess/ReviewerDashboard.js.map +1 -1
  1107. package/dist/components/dataaccess/SubmissionPage/ApproveSubmissionConfirmationModal.js.map +1 -1
  1108. package/dist/components/dataaccess/SubmissionPage/CancelDataAccessRequestConfirmationModal.js.map +1 -1
  1109. package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js.map +1 -1
  1110. package/dist/components/dataaccess/UseAccessRequirementTable.js.map +1 -1
  1111. package/dist/components/dataaccess/UserAccessRequestHistory/SubmissionSortStateTranslator.js.map +1 -1
  1112. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.js.map +1 -1
  1113. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.js.map +1 -1
  1114. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryTable.js.map +1 -1
  1115. package/dist/components/doi/CreateOrUpdateDoiModal.js.map +1 -1
  1116. package/dist/components/doi/DoiFormSchemas.js.map +1 -1
  1117. package/dist/components/doi/PrivateEntityDoiWarning.js.map +1 -1
  1118. package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js.map +1 -1
  1119. package/dist/components/download_list/DownloadConfirmationUI.js +30 -32
  1120. package/dist/components/download_list/DownloadConfirmationUI.js.map +1 -1
  1121. package/dist/components/download_list/DownloadConfirmationUtils.js.map +1 -1
  1122. package/dist/components/download_list/DownloadDetails.js.map +1 -1
  1123. package/dist/components/download_list/index.js.map +1 -1
  1124. package/dist/components/entity/metadata/AnnotationsTable.js.map +1 -1
  1125. package/dist/components/entity/metadata/EntityAnnotationKey.js.map +1 -1
  1126. package/dist/components/entity/metadata/EntityModal.js.map +1 -1
  1127. package/dist/components/entity/metadata/MetadataTable.js.map +1 -1
  1128. package/dist/components/entity/page/CreatedByModifiedBy.js.map +1 -1
  1129. package/dist/components/entity/page/action_menu/EntityActionMenu.js.map +1 -1
  1130. package/dist/components/entity/page/breadcrumbs/EntityPageBreadcrumbs.js.map +1 -1
  1131. package/dist/components/entity/page/title_bar/CitationsDialog.js.map +1 -1
  1132. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js.map +1 -1
  1133. package/dist/components/entity/page/title_bar/EntityTitleBarVersionInfo.js.map +1 -1
  1134. package/dist/components/entity/page/title_bar/TitleBarProperties.js.map +1 -1
  1135. package/dist/components/entity/page/title_bar/useDataCiteUsage.js.map +1 -1
  1136. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
  1137. package/dist/components/entity/page/title_bar/useGetMentions.js.map +1 -1
  1138. package/dist/components/error/ErrorBanner.js.map +1 -1
  1139. package/dist/components/error/ErrorChip.js.map +1 -1
  1140. package/dist/components/error/ErrorPage.js +24 -24
  1141. package/dist/components/error/ErrorPage.js.map +1 -1
  1142. package/dist/components/error/RouteErrorBoundary.js.map +1 -1
  1143. package/dist/components/error/SendMessageToEntityOwnerDialog.js.map +1 -1
  1144. package/dist/components/error/SynapseObjectDOIInfo.js.map +1 -1
  1145. package/dist/components/favorites/FavoriteButton.js.map +1 -1
  1146. package/dist/components/favorites/FavoritesPage.js.map +1 -1
  1147. package/dist/components/file/upload/BasicFileHandleUpload.js.map +1 -1
  1148. package/dist/components/file/upload/MultiFileUploadProgress.js.map +1 -1
  1149. package/dist/components/file/upload/UploadFilePanel.js.map +1 -1
  1150. package/dist/components/form/RadioGroupWithOtherString.js.map +1 -1
  1151. package/dist/components/home_page/ExpandableContent.js.map +1 -1
  1152. package/dist/components/index.js +48 -47
  1153. package/dist/components/layout/InfiniteTableLayout.js.map +1 -1
  1154. package/dist/components/layout/SWCHeader.js.map +1 -1
  1155. package/dist/components/layout/SWCPageLayout.js.map +1 -1
  1156. package/dist/components/menu/ComplexMenu.js.map +1 -1
  1157. package/dist/components/menu/DropdownMenu.js.map +1 -1
  1158. package/dist/components/row_renderers/Dataset.js.map +1 -1
  1159. package/dist/components/row_renderers/Funder.js.map +1 -1
  1160. package/dist/components/row_renderers/ObservationCard.js.map +1 -1
  1161. package/dist/components/row_renderers/utils/CardFooter.js.map +1 -1
  1162. package/dist/components/row_renderers/utils/ChipContainer.js.map +1 -1
  1163. package/dist/components/styled/HoverPopover.js.map +1 -1
  1164. package/dist/components/styled/InlineBadge.js.map +1 -1
  1165. package/dist/components/styled/InputSizedButton.js.map +1 -1
  1166. package/dist/components/styled/LargeButton.js.map +1 -1
  1167. package/dist/components/styled/LeftRightPanel.js.map +1 -1
  1168. package/dist/components/styled/LightTooltip.js.map +1 -1
  1169. package/dist/components/styled/StyledFormControl.js.map +1 -1
  1170. package/dist/components/styled/StyledPopover.js.map +1 -1
  1171. package/dist/components/styled/StyledTableContainer.js.map +1 -1
  1172. package/dist/components/styled/WideButton.js.map +1 -1
  1173. package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js +39 -42
  1174. package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js.map +1 -1
  1175. package/dist/components/table/CsvPreview/CsvPreview.js.map +1 -1
  1176. package/dist/components/table/CsvPreview/CsvPreviewDialog.js.map +1 -1
  1177. package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js.map +1 -1
  1178. package/dist/components/table/CsvPreview/CsvUploadPreviewContent.js.map +1 -1
  1179. package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.js.map +1 -1
  1180. package/dist/components/table/CsvPreview/useCreateTableFromCsv.js.map +1 -1
  1181. package/dist/components/table/CsvPreview/useCsvUploadPreview.js +11 -11
  1182. package/dist/components/table/CsvPreview/useCsvUploadPreview.js.map +1 -1
  1183. package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.js.map +1 -1
  1184. package/dist/components/table/CsvTableDescriptorForm/CsvTableDescriptorForm.js.map +1 -1
  1185. package/dist/components/trash/TrashCanList.js.map +1 -1
  1186. package/dist/components/utils/Blocker.js.map +1 -1
  1187. package/dist/components/utils/ConditionalWrapper.js.map +1 -1
  1188. package/dist/components/utils/VisibilityObserver.js.map +1 -1
  1189. package/dist/components/widgets/ElementWithTooltip.js.map +1 -1
  1190. package/dist/components/widgets/EntityColumnImage.js.map +1 -1
  1191. package/dist/components/widgets/FileHandleLink.js.map +1 -1
  1192. package/dist/components/widgets/ImageFileHandle.js.map +1 -1
  1193. package/dist/components/widgets/LoginAwareButton.js.map +1 -1
  1194. package/dist/components/widgets/Range.js.map +1 -1
  1195. package/dist/components/widgets/RangeSlider/RangeSlider.js.map +1 -1
  1196. package/dist/components/widgets/SynapseImage.js.map +1 -1
  1197. package/dist/components/widgets/SynapseVideo.js.map +1 -1
  1198. package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
  1199. package/dist/components/widgets/facet-nav/FacetPlotLegendList.js.map +1 -1
  1200. package/dist/components/widgets/facet-nav/FacetPlotLegendTable.js.map +1 -1
  1201. package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.js.map +1 -1
  1202. package/dist/components/widgets/facet-nav/PlotsContainer.js.map +1 -1
  1203. package/dist/components/widgets/facet-nav/PlotsContainerSkeleton.js.map +1 -1
  1204. package/dist/components/widgets/facet-nav/SelectionCriteriaPill.js.map +1 -1
  1205. package/dist/components/widgets/facet-nav/SelectionCriteriaPills.js.map +1 -1
  1206. package/dist/components/widgets/facet-nav/useFacetPlots.js.map +1 -1
  1207. package/dist/components/widgets/query-filter/CombinedRangeFacetFilter.js.map +1 -1
  1208. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js.map +1 -1
  1209. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterDropdown.js.map +1 -1
  1210. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.js.map +1 -1
  1211. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterSkeleton.js.map +1 -1
  1212. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.js.map +1 -1
  1213. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.js.map +1 -1
  1214. package/dist/components/widgets/query-filter/FacetChip.js.map +1 -1
  1215. package/dist/components/widgets/query-filter/FacetFilterControls.js.map +1 -1
  1216. package/dist/components/widgets/query-filter/FacetFilterHeader.js.map +1 -1
  1217. package/dist/components/widgets/query-filter/FacetFilterSkeleton.js.map +1 -1
  1218. package/dist/components/widgets/query-filter/FacetFilterUtils.js.map +1 -1
  1219. package/dist/components/widgets/query-filter/JsonColumnFacetFilters.js.map +1 -1
  1220. package/dist/components/widgets/query-filter/RangeFacetFilter.js +3 -3
  1221. package/dist/components/widgets/query-filter/RangeFacetFilter.js.map +1 -1
  1222. package/dist/components/widgets/query-filter/RangeFacetFilterUI.js +41 -41
  1223. package/dist/components/widgets/query-filter/RangeFacetFilterUI.js.map +1 -1
  1224. package/dist/features/curator/GridPage/GridPage.js.map +1 -1
  1225. package/dist/features/curator/GridPage/components/GridPageRouter.js.map +1 -1
  1226. package/dist/features/curator/GridPage/components/GridPageTitle.js.map +1 -1
  1227. package/dist/features/curator/GridPage/components/UpdateGridPageSearchParamsForm.js.map +1 -1
  1228. package/dist/features/curator/dashboard/CuratorDashboard.js.map +1 -1
  1229. package/dist/features/curator/dashboard/components/CurationTaskCard.js.map +1 -1
  1230. package/dist/features/curator/dashboard/components/NextStepButton.js.map +1 -1
  1231. package/dist/features/curator/dashboard/components/UserOrTeamChip.js.map +1 -1
  1232. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts +5 -0
  1233. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts.map +1 -1
  1234. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js +227 -181
  1235. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js.map +1 -1
  1236. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts.map +1 -1
  1237. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +3 -0
  1238. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
  1239. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js.map +1 -1
  1240. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js.map +1 -1
  1241. package/dist/features/entity/metadata-task/hooks/useGetOrCreateGridSessionForSource.js.map +1 -1
  1242. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js.map +1 -1
  1243. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.js.map +1 -1
  1244. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.d.ts.map +1 -1
  1245. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js +1 -1
  1246. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js.map +1 -1
  1247. package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js.map +1 -1
  1248. package/dist/features/entity/metadata-task/utils/constants.d.ts +5 -0
  1249. package/dist/features/entity/metadata-task/utils/constants.d.ts.map +1 -1
  1250. package/dist/features/entity/metadata-task/utils/constants.js +2 -2
  1251. package/dist/features/entity/metadata-task/utils/constants.js.map +1 -1
  1252. package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.js.map +1 -1
  1253. package/dist/features/entity/metadata-task/utils/getGridSourceIdForTask.js.map +1 -1
  1254. package/dist/features/entity/metadata-task/utils/getLatestGridSessionForSource.js.map +1 -1
  1255. package/dist/features/entity/metadata-task/utils/taskHasAssignee.js.map +1 -1
  1256. package/dist/features/team/invitation/components/OpenInvitationsToUserCard.js.map +1 -1
  1257. package/dist/index.js +54 -53
  1258. package/dist/index.js.map +1 -1
  1259. package/dist/mocks/MockAccessApprovals.js.map +1 -1
  1260. package/dist/mocks/MockSynapseContext.js.map +1 -1
  1261. package/dist/mocks/accessRequirement/mockAccessRequirementAcls.js.map +1 -1
  1262. package/dist/mocks/accessRequirement/mockAccessRequirements.js.map +1 -1
  1263. package/dist/mocks/applicationSessionContext/MockApplicationSessionContext.js.map +1 -1
  1264. package/dist/mocks/challenge/mockChallenge.js.map +1 -1
  1265. package/dist/mocks/chat/mockChat.js.map +1 -1
  1266. package/dist/mocks/curation/mockCurationTask.js.map +1 -1
  1267. package/dist/mocks/dataaccess/MockDataAccessRequest.js.map +1 -1
  1268. package/dist/mocks/dataaccess/MockResearchProject.js.map +1 -1
  1269. package/dist/mocks/dataaccess/MockSubmission.js.map +1 -1
  1270. package/dist/mocks/dataaccess/mockAccessRequest.js.map +1 -1
  1271. package/dist/mocks/discussion/mock_discussion.js.map +1 -1
  1272. package/dist/mocks/doi/MockDoi.js.map +1 -1
  1273. package/dist/mocks/entity/index.js.map +1 -1
  1274. package/dist/mocks/entity/mockDataset.js.map +1 -1
  1275. package/dist/mocks/entity/mockDatasetCollection.js.map +1 -1
  1276. package/dist/mocks/entity/mockEntity.js.map +1 -1
  1277. package/dist/mocks/entity/mockEvaluationQueue.js.map +1 -1
  1278. package/dist/mocks/entity/mockFileEntity.js.map +1 -1
  1279. package/dist/mocks/entity/mockFileEntityACLVariants.js.map +1 -1
  1280. package/dist/mocks/entity/mockFileView.js.map +1 -1
  1281. package/dist/mocks/entity/mockGeneratedEntityData.js.map +1 -1
  1282. package/dist/mocks/entity/mockProject.js.map +1 -1
  1283. package/dist/mocks/entity/mockProjectView.js.map +1 -1
  1284. package/dist/mocks/entity/mockReleaseCardsTable.js.map +1 -1
  1285. package/dist/mocks/entity/mockRootEntity.js.map +1 -1
  1286. package/dist/mocks/entity/mockTableEntity.js.map +1 -1
  1287. package/dist/mocks/faker/fakerUtils.js.map +1 -1
  1288. package/dist/mocks/faker/generateDiscussion.js.map +1 -1
  1289. package/dist/mocks/faker/generateEvaluation.js.map +1 -1
  1290. package/dist/mocks/faker/generateFakeEntity.js.map +1 -1
  1291. package/dist/mocks/faker/generateSubscription.js.map +1 -1
  1292. package/dist/mocks/mockAnnotationColumns.js.map +1 -1
  1293. package/dist/mocks/mockCertificationQuiz.js.map +1 -1
  1294. package/dist/mocks/mockDataCatalogQuery.js.map +1 -1
  1295. package/dist/mocks/mockFileViewQuery.js.map +1 -1
  1296. package/dist/mocks/mockOAuthClientAcls.js.map +1 -1
  1297. package/dist/mocks/mockQueryResponseData.js.map +1 -1
  1298. package/dist/mocks/mockQueryResponseDataWithManyEnumFacets.js.map +1 -1
  1299. package/dist/mocks/mockSchema.js.map +1 -1
  1300. package/dist/mocks/mockSearchQueryData.js +2 -2
  1301. package/dist/mocks/mockSearchQueryData.js.map +1 -1
  1302. package/dist/mocks/mockShortIo.js.map +1 -1
  1303. package/dist/mocks/mockSourceAppConfigQuery.js.map +1 -1
  1304. package/dist/mocks/mockSubscription.js.map +1 -1
  1305. package/dist/mocks/mockWiki.js.map +1 -1
  1306. package/dist/mocks/mockWikiPageKey.js.map +1 -1
  1307. package/dist/mocks/mock_drug_tool_data.js.map +1 -1
  1308. package/dist/mocks/mock_file_handle.js.map +1 -1
  1309. package/dist/mocks/mock_file_statistics.js.map +1 -1
  1310. package/dist/mocks/mock_has_access_data.js.map +1 -1
  1311. package/dist/mocks/mock_upload_destination.js.map +1 -1
  1312. package/dist/mocks/msw/handlers/accessRequirementAclHandlers.js.map +1 -1
  1313. package/dist/mocks/msw/handlers/accessRequirementHandlers.js.map +1 -1
  1314. package/dist/mocks/msw/handlers/asyncJobHandlers.js.map +1 -1
  1315. package/dist/mocks/msw/handlers/authHandlers.js.map +1 -1
  1316. package/dist/mocks/msw/handlers/challengeHandlers.js.map +1 -1
  1317. package/dist/mocks/msw/handlers/changePasswordHandlers.js.map +1 -1
  1318. package/dist/mocks/msw/handlers/chatHandlers.js.map +1 -1
  1319. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js.map +1 -1
  1320. package/dist/mocks/msw/handlers/dataciteHandlers.js.map +1 -1
  1321. package/dist/mocks/msw/handlers/discussionHandlers.js.map +1 -1
  1322. package/dist/mocks/msw/handlers/doiHandlers.js.map +1 -1
  1323. package/dist/mocks/msw/handlers/entityHandlers.js.map +1 -1
  1324. package/dist/mocks/msw/handlers/evaluationHandlers.js.map +1 -1
  1325. package/dist/mocks/msw/handlers/featureFlagHandlers.js.map +1 -1
  1326. package/dist/mocks/msw/handlers/fileHandlers.js.map +1 -1
  1327. package/dist/mocks/msw/handlers/gridHandlers.js.map +1 -1
  1328. package/dist/mocks/msw/handlers/messageHandlers.js.map +1 -1
  1329. package/dist/mocks/msw/handlers/oauthClientAclHandlers.js.map +1 -1
  1330. package/dist/mocks/msw/handlers/personalAccessTokenHandlers.js.map +1 -1
  1331. package/dist/mocks/msw/handlers/projectStorageHandlers.js.map +1 -1
  1332. package/dist/mocks/msw/handlers/realmHandlers.js.map +1 -1
  1333. package/dist/mocks/msw/handlers/researchProjectHandlers.js.map +1 -1
  1334. package/dist/mocks/msw/handlers/resetTwoFactorAuthHandlers.js.map +1 -1
  1335. package/dist/mocks/msw/handlers/schemaHandlers.js.map +1 -1
  1336. package/dist/mocks/msw/handlers/searchQueryHandlers.d.ts +1 -1
  1337. package/dist/mocks/msw/handlers/searchQueryHandlers.d.ts.map +1 -1
  1338. package/dist/mocks/msw/handlers/searchQueryHandlers.js +6 -3
  1339. package/dist/mocks/msw/handlers/searchQueryHandlers.js.map +1 -1
  1340. package/dist/mocks/msw/handlers/shortIoHandlers.js.map +1 -1
  1341. package/dist/mocks/msw/handlers/subscriptionHandlers.js.map +1 -1
  1342. package/dist/mocks/msw/handlers/tableQueryHandlers.js.map +1 -1
  1343. package/dist/mocks/msw/handlers/tableQueryService.js.map +1 -1
  1344. package/dist/mocks/msw/handlers/teamHandlers.js.map +1 -1
  1345. package/dist/mocks/msw/handlers/termsOfServiceHandlers.js.map +1 -1
  1346. package/dist/mocks/msw/handlers/userProfileHandlers.js.map +1 -1
  1347. package/dist/mocks/msw/handlers/webhookHandlers.js.map +1 -1
  1348. package/dist/mocks/msw/handlers/wikiHandlers.js.map +1 -1
  1349. package/dist/mocks/msw/handlers.js.map +1 -1
  1350. package/dist/mocks/msw/server.d.ts +1 -1
  1351. package/dist/mocks/msw/server.d.ts.map +1 -1
  1352. package/dist/mocks/msw/server.js.map +1 -1
  1353. package/dist/mocks/msw/util/BasicMockedCrudService.js.map +1 -1
  1354. package/dist/mocks/oauth/MockClient.js.map +1 -1
  1355. package/dist/mocks/personalAccessToken/mockPersonalAccessToken.js.map +1 -1
  1356. package/dist/mocks/projectStorage/mockProjectStorageLimits.js.map +1 -1
  1357. package/dist/mocks/provenance/mockActivity.js.map +1 -1
  1358. package/dist/mocks/query/defaultFileViewColumnModels.js.map +1 -1
  1359. package/dist/mocks/query/mockFeaturedDataTabsQueryData.js.map +1 -1
  1360. package/dist/mocks/query/mockHomepageQueryResultData.js.map +1 -1
  1361. package/dist/mocks/query/mockProjectViewQueryResults.js.map +1 -1
  1362. package/dist/mocks/query/mockRejectionReasonsTableQueryResultBundle.js.map +1 -1
  1363. package/dist/mocks/query/mockReleaseCardsTableQueryResultBundle.js.map +1 -1
  1364. package/dist/mocks/query/mockUserCardTableQueryResultBundle.d.ts +13 -0
  1365. package/dist/mocks/query/mockUserCardTableQueryResultBundle.d.ts.map +1 -1
  1366. package/dist/mocks/query/mockUserCardTableQueryResultBundle.js +27 -0
  1367. package/dist/mocks/query/mockUserCardTableQueryResultBundle.js.map +1 -1
  1368. package/dist/mocks/query/mock_query_data.js.map +1 -1
  1369. package/dist/mocks/query/syn16787123.js.map +1 -1
  1370. package/dist/mocks/query/syn17328596.js.map +1 -1
  1371. package/dist/mocks/query/syn51735464.js.map +1 -1
  1372. package/dist/mocks/query/syn51735464GroupBySpecies.js.map +1 -1
  1373. package/dist/mocks/realm/mockRealmPrincipal.js.map +1 -1
  1374. package/dist/mocks/team/mockTeam.js.map +1 -1
  1375. package/dist/mocks/termsOfService/mockTermsOfService.js.map +1 -1
  1376. package/dist/mocks/user/mock_user_profile.js.map +1 -1
  1377. package/dist/mocks/usergroup/mockUserGroup.js.map +1 -1
  1378. package/dist/ror-client/index.js.map +1 -1
  1379. package/dist/stories/ColorPaletteInspector.js.map +1 -1
  1380. package/dist/stories/ToastDemo.js.map +1 -1
  1381. package/dist/stories/stubs/Alert/MuiAlert.js.map +1 -1
  1382. package/dist/stories/stubs/Button/MuiButton.js.map +1 -1
  1383. package/dist/stories/stubs/Dialog/MuiDialog.js.map +1 -1
  1384. package/dist/stories/stubs/TextField/MuiTextField.js.map +1 -1
  1385. package/dist/stories/stubs/Tooltip/MuiTooltip.js.map +1 -1
  1386. package/dist/style/components/_cards.scss +10 -0
  1387. package/dist/style/components/_data-grid-extra.css +1 -1
  1388. package/dist/style/components/_data-grid-extra.scss +7 -1
  1389. package/dist/style/main.css +1 -1
  1390. package/dist/synapse-client/HttpClient.js.map +1 -1
  1391. package/dist/synapse-client/SynapseClient.d.ts.map +1 -1
  1392. package/dist/synapse-client/SynapseClient.js +499 -505
  1393. package/dist/synapse-client/SynapseClient.js.map +1 -1
  1394. package/dist/synapse-client/SynapseClientUtils.js.map +1 -1
  1395. package/dist/synapse-queries/InfiniteQueryUtils.js.map +1 -1
  1396. package/dist/synapse-queries/KeyFactory.js.map +1 -1
  1397. package/dist/synapse-queries/QueryFilterUtils.js.map +1 -1
  1398. package/dist/synapse-queries/QueryMatching.test-utils.js.map +1 -1
  1399. package/dist/synapse-queries/asynchronous/usePollAsynchronousJob.js.map +1 -1
  1400. package/dist/synapse-queries/auth/useChangePassword.js.map +1 -1
  1401. package/dist/synapse-queries/auth/useOIDC.js.map +1 -1
  1402. package/dist/synapse-queries/auth/useResetPassword.js.map +1 -1
  1403. package/dist/synapse-queries/auth/useTwoFactorEnrollment.js.map +1 -1
  1404. package/dist/synapse-queries/challenge/useChallenge.js.map +1 -1
  1405. package/dist/synapse-queries/chat/useChat.js.map +1 -1
  1406. package/dist/synapse-queries/croissant/useGetCroissantUrl.js.map +1 -1
  1407. package/dist/synapse-queries/curation/task/useCurationTask.d.ts +1 -0
  1408. package/dist/synapse-queries/curation/task/useCurationTask.d.ts.map +1 -1
  1409. package/dist/synapse-queries/curation/task/useCurationTask.js +12 -2
  1410. package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
  1411. package/dist/synapse-queries/dataaccess/useAccessApprovals.js.map +1 -1
  1412. package/dist/synapse-queries/dataaccess/useAccessRequirements.js.map +1 -1
  1413. package/dist/synapse-queries/dataaccess/useDataAccessSubmission.js.map +1 -1
  1414. package/dist/synapse-queries/dataaccess/useGetApprovedSubmissionInfo.js.map +1 -1
  1415. package/dist/synapse-queries/dataaccess/useRestrictionInformation.js.map +1 -1
  1416. package/dist/synapse-queries/docker/useGetDockerTag.js.map +1 -1
  1417. package/dist/synapse-queries/doi/useDOI.js.map +1 -1
  1418. package/dist/synapse-queries/download/useDownloadList.js.map +1 -1
  1419. package/dist/synapse-queries/entity/useActionsRequiredForTableQuery.js.map +1 -1
  1420. package/dist/synapse-queries/entity/useEntity.js.map +1 -1
  1421. package/dist/synapse-queries/entity/useEntityBoundSchema.js.map +1 -1
  1422. package/dist/synapse-queries/entity/useEntityBundle.js.map +1 -1
  1423. package/dist/synapse-queries/entity/useExportTableQueryToAnalysisPlatform.js.map +1 -1
  1424. package/dist/synapse-queries/entity/useExportToADWorkbench.js.map +1 -1
  1425. package/dist/synapse-queries/entity/useExportToCavatica.js.map +1 -1
  1426. package/dist/synapse-queries/entity/useExportToPluto.js.map +1 -1
  1427. package/dist/synapse-queries/entity/useExportToTerra.js.map +1 -1
  1428. package/dist/synapse-queries/entity/useGetEntityActionsRequired.js.map +1 -1
  1429. package/dist/synapse-queries/entity/useGetEntityChallenge.js.map +1 -1
  1430. package/dist/synapse-queries/entity/useGetEntityChildren.js.map +1 -1
  1431. package/dist/synapse-queries/entity/useGetEntityForum.js.map +1 -1
  1432. package/dist/synapse-queries/entity/useGetEntityHeaders.js.map +1 -1
  1433. package/dist/synapse-queries/entity/useGetQueryResultBundle.js.map +1 -1
  1434. package/dist/synapse-queries/entity/useProjectStorage.js.map +1 -1
  1435. package/dist/synapse-queries/entity/useSchema.js.map +1 -1
  1436. package/dist/synapse-queries/evaluation/useEvaluation.js.map +1 -1
  1437. package/dist/synapse-queries/featureflags/useGetFeatureFlag.js.map +1 -1
  1438. package/dist/synapse-queries/file/UploadToS3.js.map +1 -1
  1439. package/dist/synapse-queries/file/useDirectUploadToS3.js.map +1 -1
  1440. package/dist/synapse-queries/file/useFileHandle.js.map +1 -1
  1441. package/dist/synapse-queries/file/useFiles.js.map +1 -1
  1442. package/dist/synapse-queries/file/useSynapseMultipartUpload.js.map +1 -1
  1443. package/dist/synapse-queries/file/useUploadDestination.js.map +1 -1
  1444. package/dist/synapse-queries/forum/useForum.js.map +1 -1
  1445. package/dist/synapse-queries/forum/useReply.js.map +1 -1
  1446. package/dist/synapse-queries/forum/useThread.js.map +1 -1
  1447. package/dist/synapse-queries/github/useGithub.js.map +1 -1
  1448. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js.map +1 -1
  1449. package/dist/synapse-queries/grid/useExportGrid.js.map +1 -1
  1450. package/dist/synapse-queries/grid/useGridPresignedUrl.js.map +1 -1
  1451. package/dist/synapse-queries/grid/useGridSession.js.map +1 -1
  1452. package/dist/synapse-queries/grid/useImportCsvIntoGrid.js.map +1 -1
  1453. package/dist/synapse-queries/message/useMessage.js.map +1 -1
  1454. package/dist/synapse-queries/oauth/useOAuthClient.js.map +1 -1
  1455. package/dist/synapse-queries/portal/useListPortals.js.map +1 -1
  1456. package/dist/synapse-queries/portal/usePortal.js.map +1 -1
  1457. package/dist/synapse-queries/provenance/useGetActivityForEntity.js.map +1 -1
  1458. package/dist/synapse-queries/realm/useRealmPrincipals.js.map +1 -1
  1459. package/dist/synapse-queries/ror/index.js.map +1 -1
  1460. package/dist/synapse-queries/search/useSearch.js.map +1 -1
  1461. package/dist/synapse-queries/search/useSuggestion.js.map +1 -1
  1462. package/dist/synapse-queries/subscription/useSubscription.js.map +1 -1
  1463. package/dist/synapse-queries/table/useColumnModel.js.map +1 -1
  1464. package/dist/synapse-queries/table/useDefiningSql.js.map +1 -1
  1465. package/dist/synapse-queries/table/useDownloadTable.js.map +1 -1
  1466. package/dist/synapse-queries/table/useGetCsvPreview.js.map +1 -1
  1467. package/dist/synapse-queries/table/useTableUpdateTransaction.js.map +1 -1
  1468. package/dist/synapse-queries/team/useTeam.js.map +1 -1
  1469. package/dist/synapse-queries/team/useTeamList.js.map +1 -1
  1470. package/dist/synapse-queries/team/useTeamMembers.js.map +1 -1
  1471. package/dist/synapse-queries/termsOfService/useTermsOfService.js.map +1 -1
  1472. package/dist/synapse-queries/trash/useTrashCan.js.map +1 -1
  1473. package/dist/synapse-queries/user/useCertificationQuiz.js.map +1 -1
  1474. package/dist/synapse-queries/user/useFavorites.js.map +1 -1
  1475. package/dist/synapse-queries/user/useGetUserChallenges.js.map +1 -1
  1476. package/dist/synapse-queries/user/useGetUserProjects.js.map +1 -1
  1477. package/dist/synapse-queries/user/useGetUserTeams.js.map +1 -1
  1478. package/dist/synapse-queries/user/usePersonalAccessToken.js.map +1 -1
  1479. package/dist/synapse-queries/user/useProjects.js.map +1 -1
  1480. package/dist/synapse-queries/user/useRevokeCertification.js.map +1 -1
  1481. package/dist/synapse-queries/user/useUserBundle.js.map +1 -1
  1482. package/dist/synapse-queries/user/useUserGroupHeader.js.map +1 -1
  1483. package/dist/synapse-queries/verificationSubmission/useVerificationSubmission.js.map +1 -1
  1484. package/dist/synapse-queries/webhook/useWebhook.js.map +1 -1
  1485. package/dist/synapse-queries/wiki/useWiki.js.map +1 -1
  1486. package/dist/testutils/ComponentToBePassedPropsCustomMatcher.js.map +1 -1
  1487. package/dist/testutils/IsEditingStoreTestUtils.js +17 -0
  1488. package/dist/testutils/IsEditingStoreTestUtils.js.map +1 -0
  1489. package/dist/testutils/LocationTracker.js.map +1 -1
  1490. package/dist/testutils/MarkdownSynapseUtils.js.map +1 -1
  1491. package/dist/testutils/ReactQueryMockUtils.js.map +1 -1
  1492. package/dist/testutils/TestingLibraryUtils.js +18 -16
  1493. package/dist/testutils/TestingLibraryUtils.js.map +1 -1
  1494. package/dist/testutils/muiDatePickerMock.js.map +1 -1
  1495. package/dist/testutils/vitest.setup.js.map +1 -1
  1496. package/dist/theme/DefaultTheme.js.map +1 -1
  1497. package/dist/theme/ThemeProvider.js.map +1 -1
  1498. package/dist/theme/mergeTheme.js.map +1 -1
  1499. package/dist/theme/palette/Palettes.js.map +1 -1
  1500. package/dist/theme/spreadSx.js.map +1 -1
  1501. package/dist/theme/typography/Link.js.map +1 -1
  1502. package/dist/theme/typography/Typography.js.map +1 -1
  1503. package/dist/tsconfig.build.tsbuildinfo +1 -1
  1504. package/dist/utils/APIConstants.js.map +1 -1
  1505. package/dist/utils/AppUtils/AppUtils.d.ts.map +1 -1
  1506. package/dist/utils/AppUtils/AppUtils.js +11 -11
  1507. package/dist/utils/AppUtils/AppUtils.js.map +1 -1
  1508. package/dist/utils/AppUtils/session/ApplicationSessionContext.js.map +1 -1
  1509. package/dist/utils/AppUtils/session/ApplicationSessionManager.js.map +1 -1
  1510. package/dist/utils/AppUtils/session/AuthenticationGuard.js.map +1 -1
  1511. package/dist/utils/AppUtils/session/SessionInitializedGuard.js.map +1 -1
  1512. package/dist/utils/AppUtils/session/SynapseSessionManager.js.map +1 -1
  1513. package/dist/utils/AppUtils/session/useSessionManager.js.map +1 -1
  1514. package/dist/utils/ContentTypeUtils.js.map +1 -1
  1515. package/dist/utils/OrientationBannerConstants.js.map +1 -1
  1516. package/dist/utils/PermissionLevelToAccessType.js.map +1 -1
  1517. package/dist/utils/SynapseConstants.js.map +1 -1
  1518. package/dist/utils/analytics/sendAnalyticsEvent.js.map +1 -1
  1519. package/dist/utils/analytics/sendSearchEvent.js.map +1 -1
  1520. package/dist/utils/analytics/useGoogleAnalytics.js.map +1 -1
  1521. package/dist/utils/appendFinalQueryParamKey.js.map +1 -1
  1522. package/dist/utils/challenge/evaluation/EvaluationUtils.js.map +1 -1
  1523. package/dist/utils/context/AridhiaContext.js.map +1 -1
  1524. package/dist/utils/context/DocumentMetadataContext.js.map +1 -1
  1525. package/dist/utils/context/FullContextProvider.js.map +1 -1
  1526. package/dist/utils/context/GlobalIsEditingContext.js.map +1 -1
  1527. package/dist/utils/context/SynapseContext.js.map +1 -1
  1528. package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
  1529. package/dist/utils/functions/AccessControlListUtils.js.map +1 -1
  1530. package/dist/utils/functions/ArrayUtils.js.map +1 -1
  1531. package/dist/utils/functions/DateFormatter.js.map +1 -1
  1532. package/dist/utils/functions/DateTimeUtils.js.map +1 -1
  1533. package/dist/utils/functions/EntityTypeUtils.js.map +1 -1
  1534. package/dist/utils/functions/FileHandleUtils.js.map +1 -1
  1535. package/dist/utils/functions/GridApiUtils.js.map +1 -1
  1536. package/dist/utils/functions/IsEqualTreatUndefinedAsMissing.js.map +1 -1
  1537. package/dist/utils/functions/IsExternalLink.js.map +1 -1
  1538. package/dist/utils/functions/ObjectUtils.js.map +1 -1
  1539. package/dist/utils/functions/QueryFilterUtils.js.map +1 -1
  1540. package/dist/utils/functions/RealmUtils.js.map +1 -1
  1541. package/dist/utils/functions/RegularExpressions.js.map +1 -1
  1542. package/dist/utils/functions/ResolveLinkEntity.js.map +1 -1
  1543. package/dist/utils/functions/SanitizeHtmlUtils.js.map +1 -1
  1544. package/dist/utils/functions/SanitizeHtmlUtils.test-utils.js.map +1 -1
  1545. package/dist/utils/functions/SqlFunctions.js.map +1 -1
  1546. package/dist/utils/functions/StringUtils.js.map +1 -1
  1547. package/dist/utils/functions/TableColumnSchemaUtils.js.map +1 -1
  1548. package/dist/utils/functions/calculateFriendlyFileSize.js.map +1 -1
  1549. package/dist/utils/functions/colorPalette.js.map +1 -1
  1550. package/dist/utils/functions/deepLinkingUtils.js.map +1 -1
  1551. package/dist/utils/functions/dispatchDownloadListChangeEvent.js.map +1 -1
  1552. package/dist/utils/functions/generateCsrfToken.js.map +1 -1
  1553. package/dist/utils/functions/getDataFromFromStorage.js.map +1 -1
  1554. package/dist/utils/functions/getEndpoint.js +3 -3
  1555. package/dist/utils/functions/getEndpoint.js.map +1 -1
  1556. package/dist/utils/functions/getPrincipalDisplayName.js.map +1 -1
  1557. package/dist/utils/functions/getSynapseEntityUrl.js.map +1 -1
  1558. package/dist/utils/functions/getSynapseWebClientLink.js.map +1 -1
  1559. package/dist/utils/functions/getUserData.js.map +1 -1
  1560. package/dist/utils/functions/queryUtils.js.map +1 -1
  1561. package/dist/utils/functions/testDownloadSpeed.js.map +1 -1
  1562. package/dist/utils/functions/unCamelCase.js.map +1 -1
  1563. package/dist/utils/hooks/useConfirmItems.js.map +1 -1
  1564. package/dist/utils/hooks/useCookiePreferences.d.ts.map +1 -1
  1565. package/dist/utils/hooks/useCookiePreferences.js +24 -23
  1566. package/dist/utils/hooks/useCookiePreferences.js.map +1 -1
  1567. package/dist/utils/hooks/useCreateShortUrl.js.map +1 -1
  1568. package/dist/utils/hooks/useDebouncedEffect.js.map +1 -1
  1569. package/dist/utils/hooks/useDetectSSOCode.js.map +1 -1
  1570. package/dist/utils/hooks/useDirectDownloadHandler.js.map +1 -1
  1571. package/dist/utils/hooks/useGetEntityMetadata.js.map +1 -1
  1572. package/dist/utils/hooks/useGetGoalData.js +2 -4
  1573. package/dist/utils/hooks/useGetGoalData.js.map +1 -1
  1574. package/dist/utils/hooks/useGetInfoFromIds.js.map +1 -1
  1575. package/dist/utils/hooks/useGetIsAllSelectedInfiniteList.js.map +1 -1
  1576. package/dist/utils/hooks/useImageUrlUtils.js.map +1 -1
  1577. package/dist/utils/hooks/useImmutableTableQuery/TableQueryReducerActions.js.map +1 -1
  1578. package/dist/utils/hooks/useImmutableTableQuery/useImmutableTableQuery.js.map +1 -1
  1579. package/dist/utils/hooks/useImmutableTableQuery/useTableQueryReducer.js.map +1 -1
  1580. package/dist/utils/hooks/useIsBot.js.map +1 -1
  1581. package/dist/utils/hooks/useJsonLdScriptElement.js.map +1 -1
  1582. package/dist/utils/hooks/useListState.js.map +1 -1
  1583. package/dist/utils/hooks/useLogin.js.map +1 -1
  1584. package/dist/utils/hooks/useMediaPrintOnly.js.map +1 -1
  1585. package/dist/utils/hooks/useMutuallyExclusiveState.js.map +1 -1
  1586. package/dist/utils/hooks/useNativeSearchParams.js.map +1 -1
  1587. package/dist/utils/hooks/useOneSageURL.js.map +1 -1
  1588. package/dist/utils/hooks/useOverlay.js.map +1 -1
  1589. package/dist/utils/hooks/usePreFetchResource.js.map +1 -1
  1590. package/dist/utils/hooks/useQuerySearchParam.js.map +1 -1
  1591. package/dist/utils/hooks/useScrollFadeTransition.js.map +1 -1
  1592. package/dist/utils/hooks/useSet.js.map +1 -1
  1593. package/dist/utils/hooks/useShowDesktop.js.map +1 -1
  1594. package/dist/utils/hooks/useSourceAppConfigs.js.map +1 -1
  1595. package/dist/utils/hooks/useTableImageUrl.js.map +1 -1
  1596. package/dist/utils/hooks/useTraceUpdate.js.map +1 -1
  1597. package/dist/utils/hooks/useTrackTransientListItems.js.map +1 -1
  1598. package/dist/utils/hooks/useUploadFileEntity/getActiveUploadCount.js.map +1 -1
  1599. package/dist/utils/hooks/useUploadFileEntity/getFileEntityIdWithSameName.js.map +1 -1
  1600. package/dist/utils/hooks/useUploadFileEntity/useCreateFolderPath.js.map +1 -1
  1601. package/dist/utils/hooks/useUploadFileEntity/useCreatePathsAndGetParentId.js.map +1 -1
  1602. package/dist/utils/hooks/useUploadFileEntity/useLinkFileEntityToURL.js.map +1 -1
  1603. package/dist/utils/hooks/useUploadFileEntity/usePrepareFileEntityUpload.js.map +1 -1
  1604. package/dist/utils/hooks/useUploadFileEntity/useTrackFileUploads.js.map +1 -1
  1605. package/dist/utils/hooks/useUploadFileEntity/useUploadFileEntities.js.map +1 -1
  1606. package/dist/utils/hooks/useUploadFileEntity/useUploadFiles.js.map +1 -1
  1607. package/dist/utils/hooks/useUploadFileEntity/willUploadsExceedStorageLimit.js.map +1 -1
  1608. package/dist/utils/html/TargetEnum.js.map +1 -1
  1609. package/dist/utils/jsonschema/SchemaAnnotationUtils.js.map +1 -1
  1610. package/dist/utils/jsonschema/getEnumeratedValues.js.map +1 -1
  1611. package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.js.map +1 -1
  1612. package/dist/utils/jsonschema/getRequiredAttributes.js.map +1 -1
  1613. package/dist/utils/jsonschema/getSchemaForProperty.js.map +1 -1
  1614. package/dist/utils/jsonschema/getSchemaPropertyInfo.js.map +1 -1
  1615. package/dist/utils/jsonschema/getType.js.map +1 -1
  1616. package/dist/utils/searchDefaults.js.map +1 -1
  1617. package/dist/utils/slots/SlotUtils.js.map +1 -1
  1618. package/dist/utils/types/IsType.js.map +1 -1
  1619. package/package.json +68 -65
@@ -1 +1 @@
1
- {"version":3,"file":"APIConstants.js","names":[],"sources":["../../src/utils/APIConstants.ts"],"sourcesContent":["/**\n * Separating API endpoints into their own constants file\n */\n\nimport { ObjectType } from '@sage-bionetworks/synapse-types'\nimport { getEndpoint, BackendDestinationEnum } from './functions/getEndpoint'\n\nexport const BACKEND_ENDPOINT = `${getEndpoint(\n BackendDestinationEnum.REPO_ENDPOINT,\n)}`\n\nexport const REPO = `/repo/v1`\nexport const AUTH = `/auth/v1`\nexport const FILE = `/file/v1`\n\nconst ASYNC_START = '/async/start'\nconst ASYNC_GET = '/async/get'\n\nexport const OAUTH_ID = (id: string | number) => `${AUTH}/oauth2/client/${id}`\nexport const OAUTH_CLIENT_ACL = (id: string | number) => `${OAUTH_ID(id)}/acl`\n\nexport const ENTITY = `${REPO}/entity`\nexport const ENTITY_ALIAS = (alias: string) => `${REPO}/entity/alias/${alias}`\nexport const ENTITY_ID = (id: string | number) => `${REPO}/entity/${id}`\n/**\n * Some services allow (but do not require) you to specify the version in the path.\n */\nexport const ENTITY_ID_VERSION = (\n id: string | number,\n version?: string | number,\n) => `${REPO}/entity/${id}${version ? `/version/${version}` : ''}`\nexport const ENTITY_ID_VERSIONS = (id: string | number) =>\n `${REPO}/entity/${id}/version`\nexport const ENTITY_BUNDLE_V2 = (\n id: string | number,\n version?: string | number,\n) => `${ENTITY_ID_VERSION(id, version)}/bundle2`\nexport const ENTITY_ACCESS = (id: string | number) =>\n `${REPO}/entity/${id}/access`\nexport const ENTITY_ACL = (id: string | number) => `${ENTITY_ID(id)}/acl`\nexport const ENTITY_EVALUATION = (id: string | number) =>\n `${ENTITY_ID(id)}/evaluation`\nexport const ENTITY_PATH = (id: string | number) => `${ENTITY_ID(id)}/path`\nexport const ENTITY_PERMISSIONS = (id: string | number) =>\n `${ENTITY_ID(id)}/permissions`\nexport const ENTITY_HEADER_BY_ID = (id: string | number) =>\n `${ENTITY_ID(id)}/type`\nexport const ENTITY_HEADERS = `${REPO}/entity/header`\n\nexport const ENTITY_JSON = (id: string | number) => `${REPO}/entity/${id}/json`\nexport const ENTITY_VERSION_JSON = (\n id: string | number,\n versionNumber: number,\n) => `${REPO}/entity/${id}/version/${versionNumber}/json`\n\nexport const ENTITY_SCHEMA = (id: string | number) =>\n `${REPO}/entity/${id}/schema`\nexport const ENTITY_SCHEMA_BINDING = (id: string | number) =>\n `${ENTITY_SCHEMA(id)}/binding`\nexport const ENTITY_SCHEMA_VALIDATION = (id: string | number) =>\n `${ENTITY_SCHEMA(id)}/validation`\n\nexport const ENTITY_ACCESS_REQUIREMENTS = (entityId: string | number) =>\n `${ENTITY_ID(entityId)}/accessRequirement`\n\nexport const TABLE_QUERY_ASYNC_START = (id: string | number) =>\n `${ENTITY_ID(id)}/table/query/async/start`\n\nexport const TABLE_QUERY_ASYNC_GET = (\n entityId: string | number,\n asyncJobToken: string,\n) => `${ENTITY_ID(entityId)}/table/query/async/get/${asyncJobToken}`\n\nexport const ASYNCHRONOUS_JOB_TOKEN = (asyncJobToken: string) =>\n `${REPO}/asynchronous/job/${asyncJobToken}`\n\nexport const SEARCH_QUERY_ASYNC_START = `${REPO}/search/query/async/start`\nexport const SEARCH_QUERY_ASYNC_GET = (asyncJobToken: string) =>\n `${REPO}/search/query/async/get/${asyncJobToken}`\n\nexport const USER_PROFILE_ENDPOINT = `${REPO}/userProfile`\n\nexport const SCHEMA = `${REPO}/schema`\nexport const REGISTERED_SCHEMA = `${REPO}/schema/type/registered`\nexport const REGISTERED_SCHEMA_ID = (schema$id: string | number) =>\n `${REPO}/schema/type/registered/${schema$id}`\nexport const SCHEMA_VALIDATION_START = `${SCHEMA}/type/validation${ASYNC_START}`\nexport const SCHEMA_VALIDATION_GET = (asyncJobId: string | number) =>\n `${SCHEMA}/type/validation${ASYNC_GET}/${asyncJobId}`\n\nexport const USER = `${REPO}/user`\nexport const USER_BUNDLE = `${USER}/bundle`\nexport const USER_ID = (id: string | number) => `${USER}/${id}`\nexport const USER_ID_BUNDLE = (id: string | number) => `${USER_ID(id)}/bundle`\n\nexport const USER_PROFILE = `${REPO}/userProfile`\nexport const USER_PROFILE_ID = (id: string | number) => `${USER_PROFILE}/${id}`\n\nexport const NOTIFICATION_EMAIL = `${REPO}/notificationEmail`\nexport const ALIAS_AVAILABLE = `${REPO}/principal/available`\nexport const REGISTER_ACCOUNT_STEP_1 = (portalEndpoint: string) =>\n `${REPO}/account/emailValidation?portalEndpoint=${portalEndpoint}`\nexport const REGISTER_ACCOUNT_STEP_2 = `${REPO}/account2`\nexport const TERMS_OF_USE = `${AUTH}/termsOfUse2`\nexport const TERMS_OF_USE_INFO = `${TERMS_OF_USE}/info`\nexport const TERMS_OF_USE_STATUS = `${TERMS_OF_USE}/status`\nconst PROJECT = (projectId: string) => `${REPO}/project/${projectId}`\nexport const PROJECT_STORAGE_USAGE = (projectId: string) =>\n `${PROJECT(projectId)}/storage/usage`\nexport const VERIFICATION_SUBMISSION = `${REPO}/verificationSubmission`\nexport const VERIFICATION_SUBMISSION_STATE = (id: string) =>\n `${VERIFICATION_SUBMISSION}/${id}/state`\nexport const CHANGE_PASSWORD = `${AUTH}/user/changePassword`\n\nexport const ACCESS_REQUIREMENT = `${REPO}/accessRequirement`\nexport const ACCESS_REQUIREMENT_SEARCH = `${ACCESS_REQUIREMENT}/search`\nexport const ACCESS_REQUEST_SUBMISSION_SEARCH = `${REPO}/dataAccessSubmission/search`\n\nexport const ACCESS_REQUIREMENT_BY_ID = (id: string | number) =>\n `${ACCESS_REQUIREMENT}/${id}`\n\nexport const ACCESS_REQUIREMENT_ACL = (id: string | number) =>\n ACCESS_REQUIREMENT_BY_ID(id) + '/acl'\n\nexport const ACCESS_REQUIREMENT_STATUS = (id: string | number) =>\n ACCESS_REQUIREMENT_BY_ID(id) + '/status'\n\nexport const ACCESS_REQUIREMENT_WIKI_PAGE_KEY = (id: string | number) =>\n // Note that this is `access_requirement` not `accessRequirement`!\n `${REPO}/access_requirement/${id}/wikikey`\n\nexport const FAVORITES = `${REPO}/favorite`\n\nexport const USER_GROUP_HEADERS = `${REPO}/userGroupHeaders`\nexport const USER_GROUP_HEADERS_BATCH = `${REPO}/userGroupHeaders/batch`\n\nexport const DATA_ACCESS_SUBMISSION_BY_ID = (id: string | number) =>\n `${REPO}/dataAccessSubmission/${id}`\n\nexport const PROFILE_IMAGE_PREVIEW = (userId: string) =>\n `${REPO}/userProfile/${userId}/image/preview`\n\nexport const APPROVED_SUBMISSION_INFO = (\n accessRequirementId: string | number,\n) => ACCESS_REQUIREMENT_BY_ID(accessRequirementId) + `/approvedSubmissionInfo`\n\nexport const EVALUATION = `${REPO}/evaluation`\nexport const EVALUATION_BY_ID = (id: string | number) => EVALUATION + `/${id}`\n\nexport const ACTIVITY_FOR_ENTITY = (entityId: string, versionNumber?: string) =>\n versionNumber\n ? `${REPO}/entity/${entityId}/version/${versionNumber}/generatedBy`\n : `${REPO}/entity/${entityId}/generatedBy`\nexport const TRASHCAN = `${REPO}/trashcan`\nexport const TRASHCAN_VIEW = `${TRASHCAN}/view`\nexport const TRASHCAN_RESTORE = (id: string) => `${TRASHCAN}/restore/${id}`\nexport const TRASHCAN_PURGE = (id: string) => `${TRASHCAN}/purge/${id}`\n\nexport const TEAM = (teamId: string | number) => `${REPO}/team/${teamId}`\nexport const TEAM_ID_MEMBER_ID = (\n teamId: string | number,\n memberId: string | number,\n) => TEAM(teamId) + `/member/${memberId}`\nexport const TEAM_MEMBERS = (teamId: string | number) =>\n `${REPO}/teamMembers/${teamId}`\n\nconst notificationUnsubscribeEndpoint = 'https://www.synapse.org/SignedToken:'\nconst teamEndpoint = 'https://www.synapse.org/Team:'\n\nexport const TEAM_MEMBER = `${REPO}/teamMember/?teamEndpoint=${teamEndpoint}&notificationUnsubscribeEndpoint=${notificationUnsubscribeEndpoint}`\nexport const TEAM_ID_MEMBER_ID_WITH_NOTIFICATION = (\n teamId: string | number,\n memberId: string | number,\n) =>\n TEAM_ID_MEMBER_ID(teamId, memberId) +\n `?teamEndpoint=${teamEndpoint}&notificationUnsubscribeEndpoint=${notificationUnsubscribeEndpoint}`\nexport const MEMBERSHIP_INVITATION = (id: string) =>\n `${REPO}/membershipInvitation/${id}`\nexport const INVITEE_VERIFICATION_SIGNED_TOKEN = (id: string) =>\n `${REPO}/membershipInvitation/${id}/inviteeVerificationSignedToken`\nexport const BIND_INVITATION_TO_AUTHENTICATED_USER = (id: string) =>\n `${REPO}/membershipInvitation/${id}/inviteeId`\n\nexport const FORUM = `${REPO}/forum`\nexport const FORUM_THREAD = (id: string) => `${FORUM}/${id}/threads`\n\nexport const THREAD = `${REPO}/thread`\nexport const THREAD_ID = (id: string) => `${THREAD}/${id}`\nexport const THREAD_FOR_SUBMISSION = (submissionId: string | number) =>\n `${THREAD}/submission/${submissionId}`\nexport const THREAD_REPLIES = (id: string) => `${THREAD_ID(id)}/replies`\n\nexport const AGENT = `${REPO}/agent`\nexport const AGENT_SESSION = `${AGENT}/session`\nexport const UPDATE_AGENT_SESSION = (sessionId?: string) =>\n `${AGENT_SESSION}/${sessionId}`\nexport const LIST_AGENT_SESSIONS = `${AGENT_SESSION}s/list`\nexport const AGENT_SESSION_HISTORY = (sessionId?: string) =>\n `${AGENT_SESSION}/history/${sessionId}`\nexport const START_CHAT_ASYNC = `${AGENT}/chat/async/start`\nexport const GET_CHAT_ASYNC = (jobId: string | number) =>\n `${AGENT}/chat/async/get/${jobId}`\n\nexport const AGENT_CHAT_TRACE = (jobId: string | number) =>\n `${AGENT}/chat/trace/${jobId}`\n\nexport const DOI = `${REPO}/doi`\nexport const DOI_ASSOCIATION = `${DOI}/association`\n\nexport const ACCESS_APPROVAL = `${REPO}/accessApproval`\nexport const ACCESS_APPROVAL_BY_ID = (id: string | number) =>\n `${ACCESS_APPROVAL}/${id}`\n\nexport const DATA_ACCESS_REQUEST = `${REPO}/dataAccessRequest`\nexport const DATA_ACCESS_REQUEST_SUBMISSION = (id: string | number) =>\n `${DATA_ACCESS_REQUEST}/${id}/submission`\nexport const ACCESS_REQUIREMENT_DATA_ACCESS_REQUEST_FOR_UPDATE = (\n accessRequirementId: string | number,\n) =>\n `${ACCESS_REQUIREMENT_BY_ID(accessRequirementId)}/dataAccessRequestForUpdate`\n\nexport const RESEARCH_PROJECT = `${REPO}/researchProject`\nexport const ACCESS_REQUIREMENT_RESEARCH_PROJECT_FOR_UPDATE = (\n accessRequirementId: string | number,\n) => `${ACCESS_REQUIREMENT_BY_ID(accessRequirementId)}/researchProjectForUpdate`\n\nexport const FILE_HANDLE = `${FILE}/fileHandle`\nexport const FILE_HANDLE_BATCH = `${FILE_HANDLE}/batch`\n\nexport const PROJECTS = `${REPO}/projects`\nexport const ENTITY_ACTIONS_REQUIRED = (entityId: string) =>\n `${REPO}/entity/${entityId}/actions/download`\n\nexport const WIKI_OBJECT_TYPE = (objectType: ObjectType) => {\n return `${REPO}/${ObjectType[objectType].toLowerCase()}`\n}\n\nexport const WIKI_PAGE = (\n ownerObjectType: ObjectType,\n ownerObjectId: string,\n) => {\n return `${WIKI_OBJECT_TYPE(ownerObjectType)}/${ownerObjectId}/wiki`\n}\nexport const WIKI_PAGE_ID = (\n ownerObjectType: ObjectType,\n ownerObjectId: string,\n wikiPageId: string | undefined,\n) => {\n return `${WIKI_PAGE(ownerObjectType, ownerObjectId)}/${wikiPageId ?? ''}`\n}\n\nexport const SESSION_ACCESS_TOKEN = `${AUTH}/sessionAccessToken`\nexport const ALL_USER_SESSION_TOKENS = (targetUserId: string | number) =>\n `${AUTH}/user/${targetUserId}/sessionAccessToken/all`\n"],"mappings":"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"}
1
+ {"version":3,"file":"APIConstants.js","names":[],"sources":["../../src/utils/APIConstants.ts"],"sourcesContent":["/**\n * Separating API endpoints into their own constants file\n */\n\nimport { ObjectType } from '@sage-bionetworks/synapse-types'\nimport { getEndpoint, BackendDestinationEnum } from './functions/getEndpoint'\n\nexport const BACKEND_ENDPOINT = `${getEndpoint(\n BackendDestinationEnum.REPO_ENDPOINT,\n)}`\n\nexport const REPO = `/repo/v1`\nexport const AUTH = `/auth/v1`\nexport const FILE = `/file/v1`\n\nconst ASYNC_START = '/async/start'\nconst ASYNC_GET = '/async/get'\n\nexport const OAUTH_ID = (id: string | number) => `${AUTH}/oauth2/client/${id}`\nexport const OAUTH_CLIENT_ACL = (id: string | number) => `${OAUTH_ID(id)}/acl`\n\nexport const ENTITY = `${REPO}/entity`\nexport const ENTITY_ALIAS = (alias: string) => `${REPO}/entity/alias/${alias}`\nexport const ENTITY_ID = (id: string | number) => `${REPO}/entity/${id}`\n/**\n * Some services allow (but do not require) you to specify the version in the path.\n */\nexport const ENTITY_ID_VERSION = (\n id: string | number,\n version?: string | number,\n) => `${REPO}/entity/${id}${version ? `/version/${version}` : ''}`\nexport const ENTITY_ID_VERSIONS = (id: string | number) =>\n `${REPO}/entity/${id}/version`\nexport const ENTITY_BUNDLE_V2 = (\n id: string | number,\n version?: string | number,\n) => `${ENTITY_ID_VERSION(id, version)}/bundle2`\nexport const ENTITY_ACCESS = (id: string | number) =>\n `${REPO}/entity/${id}/access`\nexport const ENTITY_ACL = (id: string | number) => `${ENTITY_ID(id)}/acl`\nexport const ENTITY_EVALUATION = (id: string | number) =>\n `${ENTITY_ID(id)}/evaluation`\nexport const ENTITY_PATH = (id: string | number) => `${ENTITY_ID(id)}/path`\nexport const ENTITY_PERMISSIONS = (id: string | number) =>\n `${ENTITY_ID(id)}/permissions`\nexport const ENTITY_HEADER_BY_ID = (id: string | number) =>\n `${ENTITY_ID(id)}/type`\nexport const ENTITY_HEADERS = `${REPO}/entity/header`\n\nexport const ENTITY_JSON = (id: string | number) => `${REPO}/entity/${id}/json`\nexport const ENTITY_VERSION_JSON = (\n id: string | number,\n versionNumber: number,\n) => `${REPO}/entity/${id}/version/${versionNumber}/json`\n\nexport const ENTITY_SCHEMA = (id: string | number) =>\n `${REPO}/entity/${id}/schema`\nexport const ENTITY_SCHEMA_BINDING = (id: string | number) =>\n `${ENTITY_SCHEMA(id)}/binding`\nexport const ENTITY_SCHEMA_VALIDATION = (id: string | number) =>\n `${ENTITY_SCHEMA(id)}/validation`\n\nexport const ENTITY_ACCESS_REQUIREMENTS = (entityId: string | number) =>\n `${ENTITY_ID(entityId)}/accessRequirement`\n\nexport const TABLE_QUERY_ASYNC_START = (id: string | number) =>\n `${ENTITY_ID(id)}/table/query/async/start`\n\nexport const TABLE_QUERY_ASYNC_GET = (\n entityId: string | number,\n asyncJobToken: string,\n) => `${ENTITY_ID(entityId)}/table/query/async/get/${asyncJobToken}`\n\nexport const ASYNCHRONOUS_JOB_TOKEN = (asyncJobToken: string) =>\n `${REPO}/asynchronous/job/${asyncJobToken}`\n\nexport const SEARCH_QUERY_ASYNC_START = `${REPO}/search/query/async/start`\nexport const SEARCH_QUERY_ASYNC_GET = (asyncJobToken: string) =>\n `${REPO}/search/query/async/get/${asyncJobToken}`\n\nexport const USER_PROFILE_ENDPOINT = `${REPO}/userProfile`\n\nexport const SCHEMA = `${REPO}/schema`\nexport const REGISTERED_SCHEMA = `${REPO}/schema/type/registered`\nexport const REGISTERED_SCHEMA_ID = (schema$id: string | number) =>\n `${REPO}/schema/type/registered/${schema$id}`\nexport const SCHEMA_VALIDATION_START = `${SCHEMA}/type/validation${ASYNC_START}`\nexport const SCHEMA_VALIDATION_GET = (asyncJobId: string | number) =>\n `${SCHEMA}/type/validation${ASYNC_GET}/${asyncJobId}`\n\nexport const USER = `${REPO}/user`\nexport const USER_BUNDLE = `${USER}/bundle`\nexport const USER_ID = (id: string | number) => `${USER}/${id}`\nexport const USER_ID_BUNDLE = (id: string | number) => `${USER_ID(id)}/bundle`\n\nexport const USER_PROFILE = `${REPO}/userProfile`\nexport const USER_PROFILE_ID = (id: string | number) => `${USER_PROFILE}/${id}`\n\nexport const NOTIFICATION_EMAIL = `${REPO}/notificationEmail`\nexport const ALIAS_AVAILABLE = `${REPO}/principal/available`\nexport const REGISTER_ACCOUNT_STEP_1 = (portalEndpoint: string) =>\n `${REPO}/account/emailValidation?portalEndpoint=${portalEndpoint}`\nexport const REGISTER_ACCOUNT_STEP_2 = `${REPO}/account2`\nexport const TERMS_OF_USE = `${AUTH}/termsOfUse2`\nexport const TERMS_OF_USE_INFO = `${TERMS_OF_USE}/info`\nexport const TERMS_OF_USE_STATUS = `${TERMS_OF_USE}/status`\nconst PROJECT = (projectId: string) => `${REPO}/project/${projectId}`\nexport const PROJECT_STORAGE_USAGE = (projectId: string) =>\n `${PROJECT(projectId)}/storage/usage`\nexport const VERIFICATION_SUBMISSION = `${REPO}/verificationSubmission`\nexport const VERIFICATION_SUBMISSION_STATE = (id: string) =>\n `${VERIFICATION_SUBMISSION}/${id}/state`\nexport const CHANGE_PASSWORD = `${AUTH}/user/changePassword`\n\nexport const ACCESS_REQUIREMENT = `${REPO}/accessRequirement`\nexport const ACCESS_REQUIREMENT_SEARCH = `${ACCESS_REQUIREMENT}/search`\nexport const ACCESS_REQUEST_SUBMISSION_SEARCH = `${REPO}/dataAccessSubmission/search`\n\nexport const ACCESS_REQUIREMENT_BY_ID = (id: string | number) =>\n `${ACCESS_REQUIREMENT}/${id}`\n\nexport const ACCESS_REQUIREMENT_ACL = (id: string | number) =>\n ACCESS_REQUIREMENT_BY_ID(id) + '/acl'\n\nexport const ACCESS_REQUIREMENT_STATUS = (id: string | number) =>\n ACCESS_REQUIREMENT_BY_ID(id) + '/status'\n\nexport const ACCESS_REQUIREMENT_WIKI_PAGE_KEY = (id: string | number) =>\n // Note that this is `access_requirement` not `accessRequirement`!\n `${REPO}/access_requirement/${id}/wikikey`\n\nexport const FAVORITES = `${REPO}/favorite`\n\nexport const USER_GROUP_HEADERS = `${REPO}/userGroupHeaders`\nexport const USER_GROUP_HEADERS_BATCH = `${REPO}/userGroupHeaders/batch`\n\nexport const DATA_ACCESS_SUBMISSION_BY_ID = (id: string | number) =>\n `${REPO}/dataAccessSubmission/${id}`\n\nexport const PROFILE_IMAGE_PREVIEW = (userId: string) =>\n `${REPO}/userProfile/${userId}/image/preview`\n\nexport const APPROVED_SUBMISSION_INFO = (\n accessRequirementId: string | number,\n) => ACCESS_REQUIREMENT_BY_ID(accessRequirementId) + `/approvedSubmissionInfo`\n\nexport const EVALUATION = `${REPO}/evaluation`\nexport const EVALUATION_BY_ID = (id: string | number) => EVALUATION + `/${id}`\n\nexport const ACTIVITY_FOR_ENTITY = (entityId: string, versionNumber?: string) =>\n versionNumber\n ? `${REPO}/entity/${entityId}/version/${versionNumber}/generatedBy`\n : `${REPO}/entity/${entityId}/generatedBy`\nexport const TRASHCAN = `${REPO}/trashcan`\nexport const TRASHCAN_VIEW = `${TRASHCAN}/view`\nexport const TRASHCAN_RESTORE = (id: string) => `${TRASHCAN}/restore/${id}`\nexport const TRASHCAN_PURGE = (id: string) => `${TRASHCAN}/purge/${id}`\n\nexport const TEAM = (teamId: string | number) => `${REPO}/team/${teamId}`\nexport const TEAM_ID_MEMBER_ID = (\n teamId: string | number,\n memberId: string | number,\n) => TEAM(teamId) + `/member/${memberId}`\nexport const TEAM_MEMBERS = (teamId: string | number) =>\n `${REPO}/teamMembers/${teamId}`\n\nconst notificationUnsubscribeEndpoint = 'https://www.synapse.org/SignedToken:'\nconst teamEndpoint = 'https://www.synapse.org/Team:'\n\nexport const TEAM_MEMBER = `${REPO}/teamMember/?teamEndpoint=${teamEndpoint}&notificationUnsubscribeEndpoint=${notificationUnsubscribeEndpoint}`\nexport const TEAM_ID_MEMBER_ID_WITH_NOTIFICATION = (\n teamId: string | number,\n memberId: string | number,\n) =>\n TEAM_ID_MEMBER_ID(teamId, memberId) +\n `?teamEndpoint=${teamEndpoint}&notificationUnsubscribeEndpoint=${notificationUnsubscribeEndpoint}`\nexport const MEMBERSHIP_INVITATION = (id: string) =>\n `${REPO}/membershipInvitation/${id}`\nexport const INVITEE_VERIFICATION_SIGNED_TOKEN = (id: string) =>\n `${REPO}/membershipInvitation/${id}/inviteeVerificationSignedToken`\nexport const BIND_INVITATION_TO_AUTHENTICATED_USER = (id: string) =>\n `${REPO}/membershipInvitation/${id}/inviteeId`\n\nexport const FORUM = `${REPO}/forum`\nexport const FORUM_THREAD = (id: string) => `${FORUM}/${id}/threads`\n\nexport const THREAD = `${REPO}/thread`\nexport const THREAD_ID = (id: string) => `${THREAD}/${id}`\nexport const THREAD_FOR_SUBMISSION = (submissionId: string | number) =>\n `${THREAD}/submission/${submissionId}`\nexport const THREAD_REPLIES = (id: string) => `${THREAD_ID(id)}/replies`\n\nexport const AGENT = `${REPO}/agent`\nexport const AGENT_SESSION = `${AGENT}/session`\nexport const UPDATE_AGENT_SESSION = (sessionId?: string) =>\n `${AGENT_SESSION}/${sessionId}`\nexport const LIST_AGENT_SESSIONS = `${AGENT_SESSION}s/list`\nexport const AGENT_SESSION_HISTORY = (sessionId?: string) =>\n `${AGENT_SESSION}/history/${sessionId}`\nexport const START_CHAT_ASYNC = `${AGENT}/chat/async/start`\nexport const GET_CHAT_ASYNC = (jobId: string | number) =>\n `${AGENT}/chat/async/get/${jobId}`\n\nexport const AGENT_CHAT_TRACE = (jobId: string | number) =>\n `${AGENT}/chat/trace/${jobId}`\n\nexport const DOI = `${REPO}/doi`\nexport const DOI_ASSOCIATION = `${DOI}/association`\n\nexport const ACCESS_APPROVAL = `${REPO}/accessApproval`\nexport const ACCESS_APPROVAL_BY_ID = (id: string | number) =>\n `${ACCESS_APPROVAL}/${id}`\n\nexport const DATA_ACCESS_REQUEST = `${REPO}/dataAccessRequest`\nexport const DATA_ACCESS_REQUEST_SUBMISSION = (id: string | number) =>\n `${DATA_ACCESS_REQUEST}/${id}/submission`\nexport const ACCESS_REQUIREMENT_DATA_ACCESS_REQUEST_FOR_UPDATE = (\n accessRequirementId: string | number,\n) =>\n `${ACCESS_REQUIREMENT_BY_ID(accessRequirementId)}/dataAccessRequestForUpdate`\n\nexport const RESEARCH_PROJECT = `${REPO}/researchProject`\nexport const ACCESS_REQUIREMENT_RESEARCH_PROJECT_FOR_UPDATE = (\n accessRequirementId: string | number,\n) => `${ACCESS_REQUIREMENT_BY_ID(accessRequirementId)}/researchProjectForUpdate`\n\nexport const FILE_HANDLE = `${FILE}/fileHandle`\nexport const FILE_HANDLE_BATCH = `${FILE_HANDLE}/batch`\n\nexport const PROJECTS = `${REPO}/projects`\nexport const ENTITY_ACTIONS_REQUIRED = (entityId: string) =>\n `${REPO}/entity/${entityId}/actions/download`\n\nexport const WIKI_OBJECT_TYPE = (objectType: ObjectType) => {\n return `${REPO}/${ObjectType[objectType].toLowerCase()}`\n}\n\nexport const WIKI_PAGE = (\n ownerObjectType: ObjectType,\n ownerObjectId: string,\n) => {\n return `${WIKI_OBJECT_TYPE(ownerObjectType)}/${ownerObjectId}/wiki`\n}\nexport const WIKI_PAGE_ID = (\n ownerObjectType: ObjectType,\n ownerObjectId: string,\n wikiPageId: string | undefined,\n) => {\n return `${WIKI_PAGE(ownerObjectType, ownerObjectId)}/${wikiPageId ?? ''}`\n}\n\nexport const SESSION_ACCESS_TOKEN = `${AUTH}/sessionAccessToken`\nexport const ALL_USER_SESSION_TOKENS = (targetUserId: string | number) =>\n `${AUTH}/user/${targetUserId}/sessionAccessToken/all`\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AppUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/AppUtils/AppUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAO/C,wBAAgB,cAAc,SAG7B;AAED,eAAO,MAAM,4BAA4B,qDACW,CAAA;AAEpD,eAAO,MAAM,eAAe,wDAQ3B,CAAA;AAED,wBAAgB,yCAAyC,CAAC,IAAI,EAAE,MAAM,QAcrE;AAED,wBAAgB,2BAA2B,YA2B1C;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,CAAC,EAAE,gBAAgB,EAC3B,mBAAmB,CAAC,EAAE,MAAM,GAC3B,OAAO,CAwBT;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAYxC"}
1
+ {"version":3,"file":"AppUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/AppUtils/AppUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAO/C,wBAAgB,cAAc,SAG7B;AAED,eAAO,MAAM,4BAA4B,qDACW,CAAA;AAEpD,eAAO,MAAM,eAAe,wDAQ3B,CAAA;AAED,wBAAgB,yCAAyC,CAAC,IAAI,EAAE,MAAM,QAarE;AAED,wBAAgB,2BAA2B,YA0B1C;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,CAAC,EAAE,gBAAgB,EAC3B,mBAAmB,CAAC,EAAE,MAAM,GAC3B,OAAO,CAwBT;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAYxC"}
@@ -1,6 +1,6 @@
1
1
  import { ACCOUNT_SITE_PROMPTED_FOR_LOGIN_COOKIE_KEY as e, LAST_PLACE_LOCALSTORAGE_KEY as t } from "../SynapseConstants.js";
2
2
  import { useEffect as n, useState as r } from "react";
3
- import i from "universal-cookie";
3
+ import i from "js-cookie";
4
4
  //#region src/utils/AppUtils/AppUtils.ts
5
5
  function a() {
6
6
  localStorage.setItem(t, window.location.href);
@@ -10,27 +10,27 @@ var o = "org.sagebionetworks.cookies.redirect-after-login", s = () => {
10
10
  if (window.location.hostname.toLowerCase().endsWith(".dev.sagebase.org")) return ".dev.sagebase.org";
11
11
  };
12
12
  function c(e) {
13
- let t = new i(), n = /* @__PURE__ */ new Date();
14
- n.setTime(n.getTime() + 3600 * 1e3), t.set(o, window.location.href, {
13
+ let t = /* @__PURE__ */ new Date();
14
+ t.setTime(t.getTime() + 3600 * 1e3), i.set(o, window.location.href, {
15
15
  path: "/",
16
16
  domain: s(),
17
- expires: n
17
+ expires: t
18
18
  }), setTimeout(() => {
19
19
  window.location.assign(e);
20
20
  }, 10);
21
21
  }
22
22
  function l() {
23
- let t = new i(), n = /* @__PURE__ */ new Date();
24
- if (n.setMinutes(n.getMinutes() + 1), t.set(e, "true", {
23
+ let t = /* @__PURE__ */ new Date();
24
+ if (t.setMinutes(t.getMinutes() + 1), i.set(e, "true", {
25
25
  path: "/",
26
- expires: n,
26
+ expires: t,
27
27
  domain: s()
28
- }), t.get("org.sagebionetworks.cookies.redirect-after-login")) {
29
- let e = t.get(o), n = /* @__PURE__ */ new Date();
30
- return n.setTime(n.getTime() + 10 * 1e3), t.set(o, e, {
28
+ }), i.get("org.sagebionetworks.cookies.redirect-after-login")) {
29
+ let e = i.get(o), t = /* @__PURE__ */ new Date();
30
+ return t.setTime(t.getTime() + 10 * 1e3), i.set(o, e, {
31
31
  path: "/",
32
32
  domain: s(),
33
- expires: n
33
+ expires: t
34
34
  }), window.location.replace(e), !0;
35
35
  }
36
36
  return !1;
@@ -1 +1 @@
1
- {"version":3,"file":"AppUtils.js","names":[],"sources":["../../../src/utils/AppUtils/AppUtils.ts"],"sourcesContent":["import { useEffect, useState } from 'react'\nimport { NavigateFunction } from 'react-router'\nimport UniversalCookies from 'universal-cookie'\nimport {\n ACCOUNT_SITE_PROMPTED_FOR_LOGIN_COOKIE_KEY,\n LAST_PLACE_LOCALSTORAGE_KEY,\n} from '../SynapseConstants'\n\nexport function storeLastPlace() {\n // save current route (so that we can go back here after SSO)\n localStorage.setItem(LAST_PLACE_LOCALSTORAGE_KEY, window.location.href)\n}\n\nexport const ONE_SAGE_REDIRECT_COOKIE_KEY =\n 'org.sagebionetworks.cookies.redirect-after-login'\n\nexport const getCookieDomain = () => {\n if (window.location.hostname.toLowerCase().endsWith('.synapse.org')) {\n return '.synapse.org'\n }\n if (window.location.hostname.toLowerCase().endsWith('.dev.sagebase.org')) {\n return '.dev.sagebase.org'\n }\n return undefined\n}\n\nexport function storeRedirectURLForOneSageLoginAndGotoURL(href: string) {\n // save current URL in a cookie that One Sage will use to send you back to the correct page\n const cookies = new UniversalCookies()\n const twoHoursFromNow = new Date()\n twoHoursFromNow.setTime(twoHoursFromNow.getTime() + 60 * 60 * 1000)\n\n cookies.set(ONE_SAGE_REDIRECT_COOKIE_KEY, window.location.href, {\n path: '/',\n domain: getCookieDomain(),\n expires: twoHoursFromNow,\n })\n setTimeout(() => {\n window.location.assign(href)\n }, 10)\n}\n\nexport function processRedirectURLInOneSage() {\n // PORTALS-3299 : Indicate that we have completed the login workflow (cookie expires in a minute) to break out of a cycle\n const cookies = new UniversalCookies()\n const expireDate = new Date()\n expireDate.setMinutes(expireDate.getMinutes() + 1)\n cookies.set(ACCOUNT_SITE_PROMPTED_FOR_LOGIN_COOKIE_KEY, 'true', {\n path: '/',\n expires: expireDate,\n domain: getCookieDomain(),\n })\n\n if (cookies.get(ONE_SAGE_REDIRECT_COOKIE_KEY)) {\n const href = cookies.get(ONE_SAGE_REDIRECT_COOKIE_KEY)\n // instead of removing, set the expiration to 10 seconds to avoid race condition with SageAccountWeb LoggedInRedirector\n const tenSecondsFromNow = new Date()\n tenSecondsFromNow.setTime(tenSecondsFromNow.getTime() + 10 * 1000)\n cookies.set(ONE_SAGE_REDIRECT_COOKIE_KEY, href, {\n path: '/',\n domain: getCookieDomain(),\n expires: tenSecondsFromNow,\n })\n\n window.location.replace(href)\n return true\n }\n //else\n return false\n}\n\n/**\n * Returns to the route in localStorage saved when `storeLastPlace` was called,\n * typically before jumping from an app to OneSage for authentication, or before\n * jumping from OneSage to an external IdP (e.g. Google) for authentication.\n *\n * @return boolean indicating if a redirect occurred\n */\nexport function restoreLastPlace(\n navigate?: NavigateFunction,\n fallbackRedirectUrl?: string,\n): boolean {\n // go back to original route after successful SSO login\n const originalUrl = localStorage.getItem(LAST_PLACE_LOCALSTORAGE_KEY)\n localStorage.removeItem(LAST_PLACE_LOCALSTORAGE_KEY)\n const redirectUrl = originalUrl ?? fallbackRedirectUrl\n if (\n redirectUrl &&\n window.location.href != redirectUrl &&\n window.location.href.substring(window.location.origin.length) != redirectUrl\n ) {\n if (navigate) {\n if (redirectUrl.startsWith(window.location.origin)) {\n navigate(redirectUrl.substring(window.location.origin.length), {\n replace: true,\n })\n } else {\n navigate(redirectUrl, { replace: true })\n }\n } else {\n window.location.replace(redirectUrl)\n }\n return true\n }\n return false\n}\n\n/**\n * Hook to detect if the current page is framed (i.e. in an iframe). If so, it will attempt to break out of the frame.\n * See SWC-6294\n * @returns true if the page is framed and not sandboxed\n */\nexport function useFramebuster(): boolean {\n const [isFramed, setIsFramed] = useState(false)\n useEffect(() => {\n // SWC-6294: on mount, detect and attempt a client-side framebuster (mitigation only, easily bypassed by attacker)\n if (window.top && window.top !== window) {\n // If not sandboxed, make sure not to show any portal content (in case they block window unload via onbeforeunload)\n setIsFramed(true)\n // If sandboxed, this call will cause an uncaught js exception and portal will not load.\n window.top.location.href = window.location.toString()\n }\n }, [])\n return isFramed\n}\n"],"mappings":";;;;AAQA,SAAgB,IAAiB;AAE/B,cAAa,QAAQ,GAA6B,OAAO,SAAS,KAAK;;AAGzE,IAAa,IACX,oDAEW,UAAwB;AACnC,KAAI,OAAO,SAAS,SAAS,aAAa,CAAC,SAAS,eAAe,CACjE,QAAO;AAET,KAAI,OAAO,SAAS,SAAS,aAAa,CAAC,SAAS,oBAAoB,CACtE,QAAO;;AAKX,SAAgB,EAA0C,GAAc;CAEtE,IAAM,IAAU,IAAI,GAAkB,EAChC,oBAAkB,IAAI,MAAM;AAQlC,CAPA,EAAgB,QAAQ,EAAgB,SAAS,GAAG,OAAU,IAAK,EAEnE,EAAQ,IAAI,GAA8B,OAAO,SAAS,MAAM;EAC9D,MAAM;EACN,QAAQ,GAAiB;EACzB,SAAS;EACV,CAAC,EACF,iBAAiB;AACf,SAAO,SAAS,OAAO,EAAK;IAC3B,GAAG;;AAGR,SAAgB,IAA8B;CAE5C,IAAM,IAAU,IAAI,GAAkB,EAChC,oBAAa,IAAI,MAAM;AAQ7B,KAPA,EAAW,WAAW,EAAW,YAAY,GAAG,EAAE,EAClD,EAAQ,IAAI,GAA4C,QAAQ;EAC9D,MAAM;EACN,SAAS;EACT,QAAQ,GAAiB;EAC1B,CAAC,EAEE,EAAQ,IAAA,mDAAiC,EAAE;EAC7C,IAAM,IAAO,EAAQ,IAAI,EAA6B,EAEhD,oBAAoB,IAAI,MAAM;AASpC,SARA,EAAkB,QAAQ,EAAkB,SAAS,GAAG,KAAK,IAAK,EAClE,EAAQ,IAAI,GAA8B,GAAM;GAC9C,MAAM;GACN,QAAQ,GAAiB;GACzB,SAAS;GACV,CAAC,EAEF,OAAO,SAAS,QAAQ,EAAK,EACtB;;AAGT,QAAO;;AAUT,SAAgB,EACd,GACA,GACS;CAET,IAAM,IAAc,aAAa,QAAQ,EAA4B;AACrE,cAAa,WAAW,EAA4B;CACpD,IAAM,IAAc,KAAe;AAmBnC,QAjBE,KACA,OAAO,SAAS,QAAQ,KACxB,OAAO,SAAS,KAAK,UAAU,OAAO,SAAS,OAAO,OAAO,IAAI,KAE7D,IACE,EAAY,WAAW,OAAO,SAAS,OAAO,GAChD,EAAS,EAAY,UAAU,OAAO,SAAS,OAAO,OAAO,EAAE,EAC7D,SAAS,IACV,CAAC,GAEF,EAAS,GAAa,EAAE,SAAS,IAAM,CAAC,GAG1C,OAAO,SAAS,QAAQ,EAAY,EAE/B,MAEF;;AAQT,SAAgB,IAA0B;CACxC,IAAM,CAAC,GAAU,KAAe,EAAS,GAAM;AAU/C,QATA,QAAgB;AAEd,EAAI,OAAO,OAAO,OAAO,QAAQ,WAE/B,EAAY,GAAK,EAEjB,OAAO,IAAI,SAAS,OAAO,OAAO,SAAS,UAAU;IAEtD,EAAE,CAAC,EACC"}
1
+ {"version":3,"file":"AppUtils.js","names":[],"sources":["../../../src/utils/AppUtils/AppUtils.ts"],"sourcesContent":["import { useEffect, useState } from 'react'\nimport { NavigateFunction } from 'react-router'\nimport {\n ACCOUNT_SITE_PROMPTED_FOR_LOGIN_COOKIE_KEY,\n LAST_PLACE_LOCALSTORAGE_KEY,\n} from '../SynapseConstants'\nimport Cookies from 'js-cookie'\n\nexport function storeLastPlace() {\n // save current route (so that we can go back here after SSO)\n localStorage.setItem(LAST_PLACE_LOCALSTORAGE_KEY, window.location.href)\n}\n\nexport const ONE_SAGE_REDIRECT_COOKIE_KEY =\n 'org.sagebionetworks.cookies.redirect-after-login'\n\nexport const getCookieDomain = () => {\n if (window.location.hostname.toLowerCase().endsWith('.synapse.org')) {\n return '.synapse.org'\n }\n if (window.location.hostname.toLowerCase().endsWith('.dev.sagebase.org')) {\n return '.dev.sagebase.org'\n }\n return undefined\n}\n\nexport function storeRedirectURLForOneSageLoginAndGotoURL(href: string) {\n // save current URL in a cookie that One Sage will use to send you back to the correct page\n const twoHoursFromNow = new Date()\n twoHoursFromNow.setTime(twoHoursFromNow.getTime() + 60 * 60 * 1000)\n\n Cookies.set(ONE_SAGE_REDIRECT_COOKIE_KEY, window.location.href, {\n path: '/',\n domain: getCookieDomain(),\n expires: twoHoursFromNow,\n })\n setTimeout(() => {\n window.location.assign(href)\n }, 10)\n}\n\nexport function processRedirectURLInOneSage() {\n // PORTALS-3299 : Indicate that we have completed the login workflow (cookie expires in a minute) to break out of a cycle\n const expireDate = new Date()\n expireDate.setMinutes(expireDate.getMinutes() + 1)\n Cookies.set(ACCOUNT_SITE_PROMPTED_FOR_LOGIN_COOKIE_KEY, 'true', {\n path: '/',\n expires: expireDate,\n domain: getCookieDomain(),\n })\n\n if (Cookies.get(ONE_SAGE_REDIRECT_COOKIE_KEY)) {\n const href = Cookies.get(ONE_SAGE_REDIRECT_COOKIE_KEY)\n // instead of removing, set the expiration to 10 seconds to avoid race condition with SageAccountWeb LoggedInRedirector\n const tenSecondsFromNow = new Date()\n tenSecondsFromNow.setTime(tenSecondsFromNow.getTime() + 10 * 1000)\n Cookies.set(ONE_SAGE_REDIRECT_COOKIE_KEY, href!, {\n path: '/',\n domain: getCookieDomain(),\n expires: tenSecondsFromNow,\n })\n\n window.location.replace(href!)\n return true\n }\n //else\n return false\n}\n\n/**\n * Returns to the route in localStorage saved when `storeLastPlace` was called,\n * typically before jumping from an app to OneSage for authentication, or before\n * jumping from OneSage to an external IdP (e.g. Google) for authentication.\n *\n * @return boolean indicating if a redirect occurred\n */\nexport function restoreLastPlace(\n navigate?: NavigateFunction,\n fallbackRedirectUrl?: string,\n): boolean {\n // go back to original route after successful SSO login\n const originalUrl = localStorage.getItem(LAST_PLACE_LOCALSTORAGE_KEY)\n localStorage.removeItem(LAST_PLACE_LOCALSTORAGE_KEY)\n const redirectUrl = originalUrl ?? fallbackRedirectUrl\n if (\n redirectUrl &&\n window.location.href != redirectUrl &&\n window.location.href.substring(window.location.origin.length) != redirectUrl\n ) {\n if (navigate) {\n if (redirectUrl.startsWith(window.location.origin)) {\n navigate(redirectUrl.substring(window.location.origin.length), {\n replace: true,\n })\n } else {\n navigate(redirectUrl, { replace: true })\n }\n } else {\n window.location.replace(redirectUrl)\n }\n return true\n }\n return false\n}\n\n/**\n * Hook to detect if the current page is framed (i.e. in an iframe). If so, it will attempt to break out of the frame.\n * See SWC-6294\n * @returns true if the page is framed and not sandboxed\n */\nexport function useFramebuster(): boolean {\n const [isFramed, setIsFramed] = useState(false)\n useEffect(() => {\n // SWC-6294: on mount, detect and attempt a client-side framebuster (mitigation only, easily bypassed by attacker)\n if (window.top && window.top !== window) {\n // If not sandboxed, make sure not to show any portal content (in case they block window unload via onbeforeunload)\n setIsFramed(true)\n // If sandboxed, this call will cause an uncaught js exception and portal will not load.\n window.top.location.href = window.location.toString()\n }\n }, [])\n return isFramed\n}\n"],"mappings":";;;;AAQA,SAAgB,IAAiB;CAE/B,aAAa,QAAQ,GAA6B,OAAO,SAAS,IAAI;AACxE;AAEA,IAAa,IACX,oDAEW,UAAwB;CACnC,IAAI,OAAO,SAAS,SAAS,YAAY,EAAE,SAAS,cAAc,GAChE,OAAO;CAET,IAAI,OAAO,SAAS,SAAS,YAAY,EAAE,SAAS,mBAAmB,GACrE,OAAO;AAGX;AAEA,SAAgB,EAA0C,GAAc;CAEtE,IAAM,oBAAkB,IAAI,KAAK;CAQjC,AAPA,EAAgB,QAAQ,EAAgB,QAAQ,IAAI,OAAU,GAAI,GAElE,EAAQ,IAAI,GAA8B,OAAO,SAAS,MAAM;EAC9D,MAAM;EACN,QAAQ,EAAgB;EACxB,SAAS;CACX,CAAC,GACD,iBAAiB;EACf,OAAO,SAAS,OAAO,CAAI;CAC7B,GAAG,EAAE;AACP;AAEA,SAAgB,IAA8B;CAE5C,IAAM,oBAAa,IAAI,KAAK;CAQ5B,IAPA,EAAW,WAAW,EAAW,WAAW,IAAI,CAAC,GACjD,EAAQ,IAAI,GAA4C,QAAQ;EAC9D,MAAM;EACN,SAAS;EACT,QAAQ,EAAgB;CAC1B,CAAC,GAEG,EAAQ,IAAA,kDAAgC,GAAG;EAC7C,IAAM,IAAO,EAAQ,IAAI,CAA4B,GAE/C,oBAAoB,IAAI,KAAK;EASnC,OARA,EAAkB,QAAQ,EAAkB,QAAQ,IAAI,KAAK,GAAI,GACjE,EAAQ,IAAI,GAA8B,GAAO;GAC/C,MAAM;GACN,QAAQ,EAAgB;GACxB,SAAS;EACX,CAAC,GAED,OAAO,SAAS,QAAQ,CAAK,GACtB;CACT;CAEA,OAAO;AACT;AASA,SAAgB,EACd,GACA,GACS;CAET,IAAM,IAAc,aAAa,QAAQ,CAA2B;CACpE,aAAa,WAAW,CAA2B;CACnD,IAAM,IAAc,KAAe;CAmBnC,OAjBE,KACA,OAAO,SAAS,QAAQ,KACxB,OAAO,SAAS,KAAK,UAAU,OAAO,SAAS,OAAO,MAAM,KAAK,KAE7D,IACE,EAAY,WAAW,OAAO,SAAS,MAAM,IAC/C,EAAS,EAAY,UAAU,OAAO,SAAS,OAAO,MAAM,GAAG,EAC7D,SAAS,GACX,CAAC,IAED,EAAS,GAAa,EAAE,SAAS,GAAK,CAAC,IAGzC,OAAO,SAAS,QAAQ,CAAW,GAE9B,MAEF;AACT;AAOA,SAAgB,IAA0B;CACxC,IAAM,CAAC,GAAU,KAAe,EAAS,EAAK;CAU9C,OATA,QAAgB;EAEd,AAAI,OAAO,OAAO,OAAO,QAAQ,WAE/B,EAAY,EAAI,GAEhB,OAAO,IAAI,SAAS,OAAO,OAAO,SAAS,SAAS;CAExD,GAAG,CAAC,CAAC,GACE;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"ApplicationSessionContext.js","names":[],"sources":["../../../../src/utils/AppUtils/session/ApplicationSessionContext.tsx"],"sourcesContent":["import { createContext, PropsWithChildren, useContext } from 'react'\nimport { TwoFactorAuthErrorResponse } from '@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse'\nimport {\n TermsOfServiceStatus,\n TwoFactorAuthStatus,\n} from '@sage-bionetworks/synapse-types'\n\nexport type ApplicationSessionContextType = {\n /* The Synapse access token. */\n token?: string\n /** The realm of the current user. */\n realmId?: string\n /** The user ID of the current user. */\n userId?: string\n /* Whether the current user is authenticated (as opposed to anonymous). */\n isAuthenticated: boolean\n /* Whether the current user accepts the terms of use. May be undefined while status is fetched. Will always be undefined for the anonymous user. */\n termsOfServiceStatus?: TermsOfServiceStatus\n /* Whether 2FA has been enabled on the user account */\n twoFactorStatus?: TwoFactorAuthStatus\n /* Whether the session has been initialized */\n hasInitializedSession: boolean\n /* Updates this context based on the current token cookie. Should typically be called when the user has signed in or signed out. */\n refreshSession: () => Promise<void>\n /* Error object encountered when a Synapse user signs in with SSO and has 2FA enabled. A code within this error object is required to complete sign-in. */\n twoFactorAuthSSOErrorResponse?: TwoFactorAuthErrorResponse\n /**\n * Signs the user out and updates this context. After clearing the session, the page will be reloaded.\n * @param onBeforeReload Optionally synchronous callback that will be executed just before reloading.\n */\n clearSession: (onBeforeReload?: () => void) => Promise<void>\n /** Whether detection of a single-sign-on (SSO) event is pending.\n * For example, detecting an authorization code passed by an external identity provider via the user's browser.\n * A reload may be forced before this completes.\n */\n isLoadingSSO: boolean\n}\n\nconst ApplicationSessionContext = createContext<\n ApplicationSessionContextType | undefined\n>(undefined)\n\nexport type ApplicationSessionContextProviderProps = PropsWithChildren<{\n context: ApplicationSessionContextType\n}>\n\nexport function ApplicationSessionContextProvider(\n props: ApplicationSessionContextProviderProps,\n) {\n const { context, children } = props\n return (\n <ApplicationSessionContext.Provider value={context}>\n {children}\n </ApplicationSessionContext.Provider>\n )\n}\n\nexport const ApplicationSessionContextConsumer =\n ApplicationSessionContext.Consumer\n\n/*\n * Retrieves the context provided by the ApplicationSessionContextProvider. The context is often created by the\n * ApplicationSessionManager\n */\nexport function useApplicationSessionContext(): ApplicationSessionContextType {\n const context = useContext(ApplicationSessionContext)\n if (context === undefined) {\n throw new Error(\n 'useApplicationSessionContext must be used within an ApplicationSessionContextProvider',\n )\n }\n return context\n}\n"],"mappings":";;;AAsCA,IAAM,IAA4B,EAEhC,KAAA,EAAU;AAMZ,SAAgB,EACd,GACA;CACA,IAAM,EAAE,YAAS,gBAAa;AAC9B,QACE,kBAAC,EAA0B,UAA3B;EAAoC,OAAO;EACxC;EACkC,CAAA;;AAIzC,IAAa,IACX,EAA0B;AAM5B,SAAgB,IAA8D;CAC5E,IAAM,IAAU,EAAW,EAA0B;AACrD,KAAI,MAAY,KAAA,EACd,OAAU,MACR,wFACD;AAEH,QAAO"}
1
+ {"version":3,"file":"ApplicationSessionContext.js","names":[],"sources":["../../../../src/utils/AppUtils/session/ApplicationSessionContext.tsx"],"sourcesContent":["import { createContext, PropsWithChildren, useContext } from 'react'\nimport { TwoFactorAuthErrorResponse } from '@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse'\nimport {\n TermsOfServiceStatus,\n TwoFactorAuthStatus,\n} from '@sage-bionetworks/synapse-types'\n\nexport type ApplicationSessionContextType = {\n /* The Synapse access token. */\n token?: string\n /** The realm of the current user. */\n realmId?: string\n /** The user ID of the current user. */\n userId?: string\n /* Whether the current user is authenticated (as opposed to anonymous). */\n isAuthenticated: boolean\n /* Whether the current user accepts the terms of use. May be undefined while status is fetched. Will always be undefined for the anonymous user. */\n termsOfServiceStatus?: TermsOfServiceStatus\n /* Whether 2FA has been enabled on the user account */\n twoFactorStatus?: TwoFactorAuthStatus\n /* Whether the session has been initialized */\n hasInitializedSession: boolean\n /* Updates this context based on the current token cookie. Should typically be called when the user has signed in or signed out. */\n refreshSession: () => Promise<void>\n /* Error object encountered when a Synapse user signs in with SSO and has 2FA enabled. A code within this error object is required to complete sign-in. */\n twoFactorAuthSSOErrorResponse?: TwoFactorAuthErrorResponse\n /**\n * Signs the user out and updates this context. After clearing the session, the page will be reloaded.\n * @param onBeforeReload Optionally synchronous callback that will be executed just before reloading.\n */\n clearSession: (onBeforeReload?: () => void) => Promise<void>\n /** Whether detection of a single-sign-on (SSO) event is pending.\n * For example, detecting an authorization code passed by an external identity provider via the user's browser.\n * A reload may be forced before this completes.\n */\n isLoadingSSO: boolean\n}\n\nconst ApplicationSessionContext = createContext<\n ApplicationSessionContextType | undefined\n>(undefined)\n\nexport type ApplicationSessionContextProviderProps = PropsWithChildren<{\n context: ApplicationSessionContextType\n}>\n\nexport function ApplicationSessionContextProvider(\n props: ApplicationSessionContextProviderProps,\n) {\n const { context, children } = props\n return (\n <ApplicationSessionContext.Provider value={context}>\n {children}\n </ApplicationSessionContext.Provider>\n )\n}\n\nexport const ApplicationSessionContextConsumer =\n ApplicationSessionContext.Consumer\n\n/*\n * Retrieves the context provided by the ApplicationSessionContextProvider. The context is often created by the\n * ApplicationSessionManager\n */\nexport function useApplicationSessionContext(): ApplicationSessionContextType {\n const context = useContext(ApplicationSessionContext)\n if (context === undefined) {\n throw new Error(\n 'useApplicationSessionContext must be used within an ApplicationSessionContextProvider',\n )\n }\n return context\n}\n"],"mappings":";;;AAsCA,IAAM,IAA4B,EAEhC,KAAA,CAAS;AAMX,SAAgB,EACd,GACA;CACA,IAAM,EAAE,YAAS,gBAAa;CAC9B,OACE,kBAAC,EAA0B,UAA3B;EAAoC,OAAO;EACxC;CACiC,CAAA;AAExC;AAEA,IAAa,IACX,EAA0B;AAM5B,SAAgB,IAA8D;CAC5E,IAAM,IAAU,EAAW,CAAyB;CACpD,IAAI,MAAY,KAAA,GACd,MAAU,MACR,uFACF;CAEF,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"ApplicationSessionManager.js","names":[],"sources":["../../../../src/utils/AppUtils/session/ApplicationSessionManager.tsx"],"sourcesContent":["import {\n getUseUtcTimeFromCookie,\n isInSynapseExperimentalMode,\n} from '@/synapse-client/SynapseClient'\nimport { TwoFactorAuthErrorResponse } from '@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse'\nimport { PropsWithChildren } from 'react'\nimport { SynapseContextProvider, SynapseContextType } from '../../context'\nimport { ApplicationSessionContextProvider } from './ApplicationSessionContext'\nimport { AuthenticationGuard } from './AuthenticationGuard'\nimport { useSessionManager } from './useSessionManager'\n\nexport type ApplicationSessionManagerProps = PropsWithChildren<{\n /** The realm that an unauthenticated user should be signed in to. Defaults to \"0\", the public Synapse realm */\n defaultRealmId?: string\n downloadCartPageUrl?: string\n /* If defined, specifies the allowable elapsed time in seconds since the last time the End-User was actively authenticated. If the elapsed time is greater than this value, the session will be cleared and the user will have to re-authenticate. */\n maxAge?: number\n /** Called if the user is not authenticated when the session is initialized. Can be used to trigger an error if authentication is expected. */\n onMissingExpectedAuthentication?: () => void\n /*\n * Callback invoked after the user has successfully signed in through SSO when the purpose of signing in is to disable 2FA on the account.\n * The twoFactorAuthSSOError and twoFaResetToken are passed in the callback and can be used to complete the 2FA reset process.\n * This only needs to be implemented if the app implements the workflow to disable 2FA (i.e. only if the app supports account management).\n */\n onTwoFactorAuthResetThroughSSO?: (\n twoFactorAuthSSOError: TwoFactorAuthErrorResponse,\n twoFaResetToken: string,\n ) => void\n appId?: SynapseContextType['appId']\n /* If true, redirects unauthenticated users to OneSage login after session initialization */\n requireAuthentication?: boolean\n}>\n\n/**\n * The ApplicationSessionManager will manage Synapse user session in an app. The goal is that any custom app should\n * just be able to add this component near the top of its component tree and have the full Synapse login lifecycle managed\n * while exposing minimal complexity to the app itself.\n *\n * Custom per-app behavior should be customized with generalizable props to this component.\n *\n * The session data can be accessed with useApplicationSessionContext.\n *\n * This component must be called within a react-router Router. ApplicationSessionManager also wraps all of its children\n * in a SynapseContextProvider.\n * @param props\n * @constructor\n */\nexport function ApplicationSessionManager(\n props: ApplicationSessionManagerProps,\n) {\n const {\n children,\n downloadCartPageUrl,\n appId,\n requireAuthentication,\n defaultRealmId,\n ...hookOptions\n } = props\n const { sessionContext, token } = useSessionManager({\n ...hookOptions,\n defaultRealm: defaultRealmId,\n })\n\n return (\n <ApplicationSessionContextProvider context={sessionContext}>\n <SynapseContextProvider\n synapseContext={{\n accessToken: token,\n isAuthenticated: sessionContext.isAuthenticated,\n isInExperimentalMode: isInSynapseExperimentalMode(),\n utcTime: getUseUtcTimeFromCookie(),\n downloadCartPageUrl,\n appId: appId,\n }}\n >\n {requireAuthentication ? (\n <AuthenticationGuard>{children}</AuthenticationGuard>\n ) : (\n children\n )}\n </SynapseContextProvider>\n </ApplicationSessionContextProvider>\n )\n}\n\nexport default ApplicationSessionManager\n"],"mappings":";;;;;;;;AA+CA,SAAgB,EACd,GACA;CACA,IAAM,EACJ,aACA,wBACA,UACA,0BACA,mBACA,GAAG,MACD,GACE,EAAE,mBAAgB,aAAU,EAAkB;EAClD,GAAG;EACH,cAAc;EACf,CAAC;AAEF,QACE,kBAAC,GAAD;EAAmC,SAAS;YAC1C,kBAAC,GAAD;GACE,gBAAgB;IACd,aAAa;IACb,iBAAiB,EAAe;IAChC,sBAAsB,GAA6B;IACnD,SAAS,GAAyB;IAClC;IACO;IACR;aAEA,IACC,kBAAC,GAAD,EAAsB,aAA+B,CAAA,GAErD;GAEqB,CAAA;EACS,CAAA"}
1
+ {"version":3,"file":"ApplicationSessionManager.js","names":[],"sources":["../../../../src/utils/AppUtils/session/ApplicationSessionManager.tsx"],"sourcesContent":["import {\n getUseUtcTimeFromCookie,\n isInSynapseExperimentalMode,\n} from '@/synapse-client/SynapseClient'\nimport { TwoFactorAuthErrorResponse } from '@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse'\nimport { PropsWithChildren } from 'react'\nimport { SynapseContextProvider, SynapseContextType } from '../../context'\nimport { ApplicationSessionContextProvider } from './ApplicationSessionContext'\nimport { AuthenticationGuard } from './AuthenticationGuard'\nimport { useSessionManager } from './useSessionManager'\n\nexport type ApplicationSessionManagerProps = PropsWithChildren<{\n /** The realm that an unauthenticated user should be signed in to. Defaults to \"0\", the public Synapse realm */\n defaultRealmId?: string\n downloadCartPageUrl?: string\n /* If defined, specifies the allowable elapsed time in seconds since the last time the End-User was actively authenticated. If the elapsed time is greater than this value, the session will be cleared and the user will have to re-authenticate. */\n maxAge?: number\n /** Called if the user is not authenticated when the session is initialized. Can be used to trigger an error if authentication is expected. */\n onMissingExpectedAuthentication?: () => void\n /*\n * Callback invoked after the user has successfully signed in through SSO when the purpose of signing in is to disable 2FA on the account.\n * The twoFactorAuthSSOError and twoFaResetToken are passed in the callback and can be used to complete the 2FA reset process.\n * This only needs to be implemented if the app implements the workflow to disable 2FA (i.e. only if the app supports account management).\n */\n onTwoFactorAuthResetThroughSSO?: (\n twoFactorAuthSSOError: TwoFactorAuthErrorResponse,\n twoFaResetToken: string,\n ) => void\n appId?: SynapseContextType['appId']\n /* If true, redirects unauthenticated users to OneSage login after session initialization */\n requireAuthentication?: boolean\n}>\n\n/**\n * The ApplicationSessionManager will manage Synapse user session in an app. The goal is that any custom app should\n * just be able to add this component near the top of its component tree and have the full Synapse login lifecycle managed\n * while exposing minimal complexity to the app itself.\n *\n * Custom per-app behavior should be customized with generalizable props to this component.\n *\n * The session data can be accessed with useApplicationSessionContext.\n *\n * This component must be called within a react-router Router. ApplicationSessionManager also wraps all of its children\n * in a SynapseContextProvider.\n * @param props\n * @constructor\n */\nexport function ApplicationSessionManager(\n props: ApplicationSessionManagerProps,\n) {\n const {\n children,\n downloadCartPageUrl,\n appId,\n requireAuthentication,\n defaultRealmId,\n ...hookOptions\n } = props\n const { sessionContext, token } = useSessionManager({\n ...hookOptions,\n defaultRealm: defaultRealmId,\n })\n\n return (\n <ApplicationSessionContextProvider context={sessionContext}>\n <SynapseContextProvider\n synapseContext={{\n accessToken: token,\n isAuthenticated: sessionContext.isAuthenticated,\n isInExperimentalMode: isInSynapseExperimentalMode(),\n utcTime: getUseUtcTimeFromCookie(),\n downloadCartPageUrl,\n appId: appId,\n }}\n >\n {requireAuthentication ? (\n <AuthenticationGuard>{children}</AuthenticationGuard>\n ) : (\n children\n )}\n </SynapseContextProvider>\n </ApplicationSessionContextProvider>\n )\n}\n\nexport default ApplicationSessionManager\n"],"mappings":";;;;;;;;AA+CA,SAAgB,EACd,GACA;CACA,IAAM,EACJ,aACA,wBACA,UACA,0BACA,mBACA,GAAG,MACD,GACE,EAAE,mBAAgB,aAAU,EAAkB;EAClD,GAAG;EACH,cAAc;CAChB,CAAC;CAED,OACE,kBAAC,GAAD;EAAmC,SAAS;YAC1C,kBAAC,GAAD;GACE,gBAAgB;IACd,aAAa;IACb,iBAAiB,EAAe;IAChC,sBAAsB,EAA4B;IAClD,SAAS,EAAwB;IACjC;IACO;GACT;aAEC,IACC,kBAAC,GAAD,EAAsB,YAA8B,CAAA,IAEpD;EAEoB,CAAA;CACS,CAAA;AAEvC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AuthenticationGuard.js","names":[],"sources":["../../../../src/utils/AppUtils/session/AuthenticationGuard.tsx"],"sourcesContent":["import { BlockingLoader } from '@/components/LoadingScreen/LoadingScreen'\nimport { PropsWithChildren, useEffect, useState } from 'react'\nimport { useSynapseContext } from '../../context'\nimport { storeRedirectURLForOneSageLoginAndGotoURL } from '../AppUtils'\nimport { useOneSageURL } from '../../hooks/useOneSageURL'\nimport { useApplicationSessionContext } from './ApplicationSessionContext'\n\n/**\n * AuthenticationGuard redirects unauthenticated users to OneSage login\n * after session initialization is complete. This component displays a loading\n * screen while checking authentication status and handles the redirect flow.\n *\n * @example\n * ```tsx\n * <AuthenticationGuard>\n * <ProtectedContent />\n * </AuthenticationGuard>\n * ```\n */\nexport function AuthenticationGuard({ children }: PropsWithChildren) {\n const { isAuthenticated } = useSynapseContext()\n const { hasInitializedSession } = useApplicationSessionContext()\n const oneSageURL = useOneSageURL()\n const [hasCheckedAuth, setHasCheckedAuth] = useState(false)\n\n useEffect(() => {\n if (hasInitializedSession && !hasCheckedAuth) {\n setHasCheckedAuth(true)\n if (!isAuthenticated) {\n storeRedirectURLForOneSageLoginAndGotoURL(oneSageURL.toString())\n }\n }\n }, [hasInitializedSession, isAuthenticated, hasCheckedAuth, oneSageURL])\n\n // Show loading screen while checking authentication\n if (!hasCheckedAuth) {\n return <BlockingLoader show={true} hintText=\"Checking authentication...\" />\n }\n\n // If authenticated, show children\n // If not authenticated, the redirect has been triggered above, show loading\n return isAuthenticated ? (\n <>{children}</>\n ) : (\n <BlockingLoader show={true} hintText=\"Redirecting to sign in...\" />\n )\n}\n"],"mappings":";;;;;;;;;AAmBA,SAAgB,EAAoB,EAAE,eAA+B;CACnE,IAAM,EAAE,uBAAoB,GAAmB,EACzC,EAAE,6BAA0B,GAA8B,EAC1D,IAAa,GAAe,EAC5B,CAAC,GAAgB,KAAqB,EAAS,GAAM;AAkB3D,QAhBA,QAAgB;AACd,EAAI,KAAyB,CAAC,MAC5B,EAAkB,GAAK,EAClB,KACH,EAA0C,EAAW,UAAU,CAAC;IAGnE;EAAC;EAAuB;EAAiB;EAAgB;EAAW,CAAC,EAGnE,IAME,IACL,kBAAA,GAAA,EAAG,aAAY,CAAA,GAEf,kBAAC,GAAD;EAAgB,MAAM;EAAM,UAAS;EAA8B,CAAA,GAR5D,kBAAC,GAAD;EAAgB,MAAM;EAAM,UAAS;EAA+B,CAAA"}
1
+ {"version":3,"file":"AuthenticationGuard.js","names":[],"sources":["../../../../src/utils/AppUtils/session/AuthenticationGuard.tsx"],"sourcesContent":["import { BlockingLoader } from '@/components/LoadingScreen/LoadingScreen'\nimport { PropsWithChildren, useEffect, useState } from 'react'\nimport { useSynapseContext } from '../../context'\nimport { storeRedirectURLForOneSageLoginAndGotoURL } from '../AppUtils'\nimport { useOneSageURL } from '../../hooks/useOneSageURL'\nimport { useApplicationSessionContext } from './ApplicationSessionContext'\n\n/**\n * AuthenticationGuard redirects unauthenticated users to OneSage login\n * after session initialization is complete. This component displays a loading\n * screen while checking authentication status and handles the redirect flow.\n *\n * @example\n * ```tsx\n * <AuthenticationGuard>\n * <ProtectedContent />\n * </AuthenticationGuard>\n * ```\n */\nexport function AuthenticationGuard({ children }: PropsWithChildren) {\n const { isAuthenticated } = useSynapseContext()\n const { hasInitializedSession } = useApplicationSessionContext()\n const oneSageURL = useOneSageURL()\n const [hasCheckedAuth, setHasCheckedAuth] = useState(false)\n\n useEffect(() => {\n if (hasInitializedSession && !hasCheckedAuth) {\n setHasCheckedAuth(true)\n if (!isAuthenticated) {\n storeRedirectURLForOneSageLoginAndGotoURL(oneSageURL.toString())\n }\n }\n }, [hasInitializedSession, isAuthenticated, hasCheckedAuth, oneSageURL])\n\n // Show loading screen while checking authentication\n if (!hasCheckedAuth) {\n return <BlockingLoader show={true} hintText=\"Checking authentication...\" />\n }\n\n // If authenticated, show children\n // If not authenticated, the redirect has been triggered above, show loading\n return isAuthenticated ? (\n <>{children}</>\n ) : (\n <BlockingLoader show={true} hintText=\"Redirecting to sign in...\" />\n )\n}\n"],"mappings":";;;;;;;;;AAmBA,SAAgB,EAAoB,EAAE,eAA+B;CACnE,IAAM,EAAE,uBAAoB,EAAkB,GACxC,EAAE,6BAA0B,EAA6B,GACzD,IAAa,EAAc,GAC3B,CAAC,GAAgB,KAAqB,EAAS,EAAK;CAkB1D,OAhBA,QAAgB;EACd,AAAI,KAAyB,CAAC,MAC5B,EAAkB,EAAI,GACjB,KACH,EAA0C,EAAW,SAAS,CAAC;CAGrE,GAAG;EAAC;EAAuB;EAAiB;EAAgB;CAAU,CAAC,GAGlE,IAME,IACL,kBAAA,GAAA,EAAG,YAAW,CAAA,IAEd,kBAAC,GAAD;EAAgB,MAAM;EAAM,UAAS;CAA6B,CAAA,IAR3D,kBAAC,GAAD;EAAgB,MAAM;EAAM,UAAS;CAA8B,CAAA;AAU9E"}
@@ -1 +1 @@
1
- {"version":3,"file":"SessionInitializedGuard.js","names":[],"sources":["../../../../src/utils/AppUtils/session/SessionInitializedGuard.tsx"],"sourcesContent":["import { BlockingLoader } from '@/components/LoadingScreen/LoadingScreen'\nimport { PropsWithChildren } from 'react'\nimport { useApplicationSessionContext } from './ApplicationSessionContext'\n\nexport type SessionInitializedGuardProps = PropsWithChildren<{\n /** Optional hint text to display while waiting for session initialization */\n hintText?: string\n}>\n\n/**\n * SessionInitializedGuard waits for session initialization to complete before\n * rendering its children. This component displays a loading screen while the\n * session is being initialized. This is useful for components that need to ensure\n * the session state is ready before making any queries or performing operations\n * that depend on authentication status.\n *\n * @example\n * ```tsx\n * <SessionInitializedGuard>\n * <ComponentThatNeedsSession />\n * </SessionInitializedGuard>\n * ```\n */\nexport function SessionInitializedGuard(props: SessionInitializedGuardProps) {\n const { children, hintText } = props\n const { hasInitializedSession } = useApplicationSessionContext()\n\n if (!hasInitializedSession) {\n return <BlockingLoader show={true} hintText={hintText} />\n }\n\n return <>{children}</>\n}\n"],"mappings":";;;;AAuBA,SAAgB,EAAwB,GAAqC;CAC3E,IAAM,EAAE,aAAU,gBAAa,GACzB,EAAE,6BAA0B,GAA8B;AAMhE,QAJK,IAIE,kBAAA,GAAA,EAAG,aAAY,CAAA,GAHb,kBAAC,GAAD;EAAgB,MAAM;EAAgB;EAAY,CAAA"}
1
+ {"version":3,"file":"SessionInitializedGuard.js","names":[],"sources":["../../../../src/utils/AppUtils/session/SessionInitializedGuard.tsx"],"sourcesContent":["import { BlockingLoader } from '@/components/LoadingScreen/LoadingScreen'\nimport { PropsWithChildren } from 'react'\nimport { useApplicationSessionContext } from './ApplicationSessionContext'\n\nexport type SessionInitializedGuardProps = PropsWithChildren<{\n /** Optional hint text to display while waiting for session initialization */\n hintText?: string\n}>\n\n/**\n * SessionInitializedGuard waits for session initialization to complete before\n * rendering its children. This component displays a loading screen while the\n * session is being initialized. This is useful for components that need to ensure\n * the session state is ready before making any queries or performing operations\n * that depend on authentication status.\n *\n * @example\n * ```tsx\n * <SessionInitializedGuard>\n * <ComponentThatNeedsSession />\n * </SessionInitializedGuard>\n * ```\n */\nexport function SessionInitializedGuard(props: SessionInitializedGuardProps) {\n const { children, hintText } = props\n const { hasInitializedSession } = useApplicationSessionContext()\n\n if (!hasInitializedSession) {\n return <BlockingLoader show={true} hintText={hintText} />\n }\n\n return <>{children}</>\n}\n"],"mappings":";;;;AAuBA,SAAgB,EAAwB,GAAqC;CAC3E,IAAM,EAAE,aAAU,gBAAa,GACzB,EAAE,6BAA0B,EAA6B;CAM/D,OAJK,IAIE,kBAAA,GAAA,EAAG,YAAW,CAAA,IAHZ,kBAAC,GAAD;EAAgB,MAAM;EAAgB;CAAW,CAAA;AAI5D"}
@@ -1 +1 @@
1
- {"version":3,"file":"SynapseSessionManager.js","names":[],"sources":["../../../../src/utils/AppUtils/session/SynapseSessionManager.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport {\n BackendDestinationEnum,\n getEndpoint,\n} from '@/utils/functions/getEndpoint'\nimport {\n OAuthTokenIntrospectionResponse,\n RealmPrincipal,\n SynapseClient as SynapseOpenApiClient,\n SynapseClientError,\n} from '@sage-bionetworks/synapse-client'\n\nconst REFRESH_INTERVAL_MS = 60_000\n\nexport type SessionState = {\n token: string | undefined\n realmId: string | undefined\n userId: string | undefined\n isAuthenticated: boolean\n hasInitializedSession: boolean\n}\n\nexport type SynapseSessionManagerOptions = {\n /** The realm that an unauthenticated user should be signed in to. Defaults to \"0\", the public Synapse realm */\n defaultRealm?: string\n /** If defined, specifies the allowable elapsed time in seconds since the last time the End-User was actively authenticated.\n * If the elapsed time is greater than this value, the session will be cleared and the user will have to re-authenticate. */\n maxAge?: number\n /** Called if the user is not authenticated when the session is initialized. */\n onMissingExpectedAuthentication?: () => void\n /** Called when a stored token fails validation (e.g. expired). Called after the session manager signs out.\n * If not provided, the session manager will call `window.location.reload()` after signing out. */\n onSessionInvalid?: () => void\n}\n\nconst INITIAL_STATE: SessionState = {\n token: undefined,\n realmId: undefined,\n userId: undefined,\n isAuthenticated: false,\n hasInitializedSession: false,\n}\n\n/**\n * Framework-agnostic session manager for Synapse applications.\n *\n * Handles the full session lifecycle: token retrieval from browser cookies,\n * token validation via OAuth2 introspection, periodic refresh, and sign-out.\n *\n * Can be used directly from any JavaScript context (GWT/JsInterop, vanilla JS, etc.)\n * or wrapped by a framework-specific adapter (e.g. a React hook via `useSyncExternalStore`).\n *\n * Implements the external store contract: use {@link subscribe} and {@link getSnapshot}\n * to integrate with React's `useSyncExternalStore`, or any other subscription-based framework.\n */\nexport class SynapseSessionManager {\n private state: SessionState = INITIAL_STATE\n private listeners = new Set<() => void>()\n private intervalId: ReturnType<typeof setInterval> | null = null\n private options: Required<\n Pick<SynapseSessionManagerOptions, 'defaultRealm'>\n > &\n SynapseSessionManagerOptions\n\n constructor(options: SynapseSessionManagerOptions = {}) {\n this.options = {\n ...options,\n defaultRealm: options.defaultRealm ?? '0',\n }\n // Bind methods so they can be passed directly to useSyncExternalStore\n this.subscribe = this.subscribe.bind(this)\n this.getSnapshot = this.getSnapshot.bind(this)\n this.getServerSnapshot = this.getServerSnapshot.bind(this)\n }\n\n /**\n * Subscribe to state changes. The listener is called whenever session state is updated.\n * @returns an unsubscribe function.\n *\n * Compatible with React's `useSyncExternalStore(manager.subscribe, manager.getSnapshot)`.\n */\n subscribe(listener: () => void): () => void {\n this.listeners.add(listener)\n return () => {\n this.listeners.delete(listener)\n }\n }\n\n /**\n * Get the current session state snapshot. Returns a stable reference that only\n * changes when the state is updated.\n *\n * Compatible with React's `useSyncExternalStore(manager.subscribe, manager.getSnapshot)`.\n */\n getSnapshot(): SessionState {\n return this.state\n }\n\n /**\n * Get the server-side (SSR) snapshot: always returns the unauthenticated initial state.\n * Required by React's `useSyncExternalStore` when rendering on the server.\n */\n getServerSnapshot(): SessionState {\n return INITIAL_STATE\n }\n\n /**\n * Update mutable options. Values are read at `refreshSession`/`clearSession` call time,\n * so changes take effect on the next refresh cycle.\n */\n setOptions(\n options: Pick<SynapseSessionManagerOptions, 'defaultRealm' | 'maxAge'>,\n ): void {\n if (options.defaultRealm !== undefined) {\n this.options.defaultRealm = options.defaultRealm\n }\n if (options.maxAge !== undefined) {\n this.options.maxAge = options.maxAge\n }\n }\n\n /**\n * Start the session manager: performs an initial refresh and sets up the periodic refresh interval.\n */\n start(): void {\n this.refreshSession()\n this.intervalId = setInterval(() => {\n this.refreshSession()\n }, REFRESH_INTERVAL_MS)\n }\n\n /**\n * Stop the periodic refresh and clean up resources.\n */\n dispose(): void {\n if (this.intervalId !== null) {\n clearInterval(this.intervalId)\n this.intervalId = null\n }\n }\n\n /**\n * Refresh the session by reading the stored token, validating it, and updating state.\n * If no token is stored, initializes an anonymous session.\n * If the token is invalid, signs out and triggers onSessionInvalid (or reloads the page).\n */\n async refreshSession(): Promise<void> {\n let token = await SynapseSessionManager.getStoredToken()\n\n if (!token) {\n token = await this.initAnonymousUserState()\n }\n\n const introspectionResponse = await SynapseSessionManager.validateToken(\n token,\n this.options.maxAge,\n )\n if (introspectionResponse === null) {\n // Token was invalid (e.g. expired). Clear from browser storage and get a fresh anonymous token.\n await SynapseClient.signOut(this.options.defaultRealm)\n if (this.options.onSessionInvalid) {\n this.options.onSessionInvalid()\n } else {\n window.location.reload()\n }\n return\n }\n\n const currentUserId = introspectionResponse.sub\n\n let realmPrincipals: RealmPrincipal | undefined\n try {\n realmPrincipals =\n await SynapseSessionManager.getCurrentRealmPrincipals(token)\n } catch (error) {\n // Special handling for Terms of Service and 2FA errors - allow initialization to continue\n // so the app can prompt the user to complete the required action\n const isTosError =\n error instanceof SynapseClientError &&\n error.reason?.toLowerCase().includes('terms of service')\n const isTwoFaError =\n error instanceof SynapseClientError &&\n error.errorResponse &&\n 'errorCode' in error.errorResponse &&\n error.errorResponse.errorCode === 'TWO_FA_ENABLED_REQUIRED'\n\n if (isTosError || isTwoFaError) {\n const errorType = isTosError\n ? 'Terms of Service not accepted'\n : 'Two factor authentication required'\n console.warn(\n `${errorType}. Session will be initialized without realm principals.`,\n )\n // Continue initialization with partial data - the app's flow will handle this\n this.updateState({\n token,\n hasInitializedSession: true,\n realmId: this.options.defaultRealm,\n userId: currentUserId,\n isAuthenticated: true, // User has a valid token, even if ToS/2FA not complete\n })\n return\n }\n // For any other error, re-throw to be handled by caller\n console.error('Error fetching realm principals: ', error)\n throw error\n }\n\n const isAuthenticated = currentUserId !== realmPrincipals.anonymousUser\n\n /*\n NOTE: It's possible for a user to possess an anonymous token from a different realm (e.g. if they started on an app with a default realm, \n then navigated to a different app with a different default realm). Currently, we will do nothing, so the user will stay in the realm in which they started.\n We may consider different approaches in the future as new requirements arise, such as\n - Replacing the anonymous token with a new one from the default realm (could cause issues if two apps with different realms are used in different tabs)\n - Storing anonymous tokens per-realm\n - Adding UI to choose a realm or account to use\n */\n\n this.updateState({\n token,\n hasInitializedSession: true,\n realmId: realmPrincipals.realmId,\n userId: currentUserId,\n isAuthenticated,\n })\n }\n\n /**\n * Clear the current session by signing out and initializing an anonymous session.\n * Does NOT handle navigation/reload — the caller is responsible for that.\n */\n async clearSession(): Promise<void> {\n await this.initAnonymousUserState()\n await this.refreshSession()\n }\n\n /**\n * Attempt to get the stored access token from the browser cookie.\n * Returns the token string, or undefined if not found or on error.\n */\n static async getStoredToken(): Promise<string | undefined> {\n try {\n return await SynapseClient.getAccessTokenFromCookie()\n } catch (e) {\n console.error('Unable to get the access token: ', e)\n return undefined\n }\n }\n\n /**\n * Validate the token by calling the token introspection service.\n * @return the introspection response if valid, or null if the token is invalid\n */\n static async validateToken(\n accessToken: string,\n maxAge?: number,\n ): Promise<OAuthTokenIntrospectionResponse | null> {\n const synapseClient = new SynapseOpenApiClient({\n accessToken,\n basePath: getEndpoint(BackendDestinationEnum.REPO_ENDPOINT),\n })\n try {\n const response =\n await synapseClient.openIDConnectServicesClient.postAuthV1Oauth2Introspect(\n {\n oAuthTokenIntrospectionRequest: {\n token: accessToken,\n max_age: maxAge,\n },\n },\n )\n if (!response.active) {\n throw new Error('Token is not active.')\n }\n return response\n } catch (e) {\n console.error(\n 'Error validating the access token. Clearing session. Error: ',\n (e as Error).message,\n )\n }\n\n return null\n }\n\n /**\n * Get the realm principals for the current token.\n */\n static async getCurrentRealmPrincipals(\n accessToken: string,\n ): Promise<RealmPrincipal> {\n const synapseClient = new SynapseOpenApiClient({\n accessToken,\n basePath: getEndpoint(BackendDestinationEnum.REPO_ENDPOINT),\n })\n return synapseClient.realmServicesClient.getRepoV1RealmPrincipals()\n }\n\n /**\n * Initialize the session for an anonymous user.\n * @return the new anonymous token.\n */\n private async initAnonymousUserState(): Promise<string> {\n if (this.options.onMissingExpectedAuthentication) {\n this.options.onMissingExpectedAuthentication()\n }\n return SynapseClient.signOut(this.options.defaultRealm)\n }\n\n private updateState(newState: SessionState): void {\n this.state = newState\n this.emitChange()\n }\n\n private emitChange(): void {\n for (const listener of this.listeners) {\n listener()\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SynapseSessionManager.js","names":[],"sources":["../../../../src/utils/AppUtils/session/SynapseSessionManager.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport {\n BackendDestinationEnum,\n getEndpoint,\n} from '@/utils/functions/getEndpoint'\nimport {\n OAuthTokenIntrospectionResponse,\n RealmPrincipal,\n SynapseClient as SynapseOpenApiClient,\n SynapseClientError,\n} from '@sage-bionetworks/synapse-client'\n\nconst REFRESH_INTERVAL_MS = 60_000\n\nexport type SessionState = {\n token: string | undefined\n realmId: string | undefined\n userId: string | undefined\n isAuthenticated: boolean\n hasInitializedSession: boolean\n}\n\nexport type SynapseSessionManagerOptions = {\n /** The realm that an unauthenticated user should be signed in to. Defaults to \"0\", the public Synapse realm */\n defaultRealm?: string\n /** If defined, specifies the allowable elapsed time in seconds since the last time the End-User was actively authenticated.\n * If the elapsed time is greater than this value, the session will be cleared and the user will have to re-authenticate. */\n maxAge?: number\n /** Called if the user is not authenticated when the session is initialized. */\n onMissingExpectedAuthentication?: () => void\n /** Called when a stored token fails validation (e.g. expired). Called after the session manager signs out.\n * If not provided, the session manager will call `window.location.reload()` after signing out. */\n onSessionInvalid?: () => void\n}\n\nconst INITIAL_STATE: SessionState = {\n token: undefined,\n realmId: undefined,\n userId: undefined,\n isAuthenticated: false,\n hasInitializedSession: false,\n}\n\n/**\n * Framework-agnostic session manager for Synapse applications.\n *\n * Handles the full session lifecycle: token retrieval from browser cookies,\n * token validation via OAuth2 introspection, periodic refresh, and sign-out.\n *\n * Can be used directly from any JavaScript context (GWT/JsInterop, vanilla JS, etc.)\n * or wrapped by a framework-specific adapter (e.g. a React hook via `useSyncExternalStore`).\n *\n * Implements the external store contract: use {@link subscribe} and {@link getSnapshot}\n * to integrate with React's `useSyncExternalStore`, or any other subscription-based framework.\n */\nexport class SynapseSessionManager {\n private state: SessionState = INITIAL_STATE\n private listeners = new Set<() => void>()\n private intervalId: ReturnType<typeof setInterval> | null = null\n private options: Required<\n Pick<SynapseSessionManagerOptions, 'defaultRealm'>\n > &\n SynapseSessionManagerOptions\n\n constructor(options: SynapseSessionManagerOptions = {}) {\n this.options = {\n ...options,\n defaultRealm: options.defaultRealm ?? '0',\n }\n // Bind methods so they can be passed directly to useSyncExternalStore\n this.subscribe = this.subscribe.bind(this)\n this.getSnapshot = this.getSnapshot.bind(this)\n this.getServerSnapshot = this.getServerSnapshot.bind(this)\n }\n\n /**\n * Subscribe to state changes. The listener is called whenever session state is updated.\n * @returns an unsubscribe function.\n *\n * Compatible with React's `useSyncExternalStore(manager.subscribe, manager.getSnapshot)`.\n */\n subscribe(listener: () => void): () => void {\n this.listeners.add(listener)\n return () => {\n this.listeners.delete(listener)\n }\n }\n\n /**\n * Get the current session state snapshot. Returns a stable reference that only\n * changes when the state is updated.\n *\n * Compatible with React's `useSyncExternalStore(manager.subscribe, manager.getSnapshot)`.\n */\n getSnapshot(): SessionState {\n return this.state\n }\n\n /**\n * Get the server-side (SSR) snapshot: always returns the unauthenticated initial state.\n * Required by React's `useSyncExternalStore` when rendering on the server.\n */\n getServerSnapshot(): SessionState {\n return INITIAL_STATE\n }\n\n /**\n * Update mutable options. Values are read at `refreshSession`/`clearSession` call time,\n * so changes take effect on the next refresh cycle.\n */\n setOptions(\n options: Pick<SynapseSessionManagerOptions, 'defaultRealm' | 'maxAge'>,\n ): void {\n if (options.defaultRealm !== undefined) {\n this.options.defaultRealm = options.defaultRealm\n }\n if (options.maxAge !== undefined) {\n this.options.maxAge = options.maxAge\n }\n }\n\n /**\n * Start the session manager: performs an initial refresh and sets up the periodic refresh interval.\n */\n start(): void {\n this.refreshSession()\n this.intervalId = setInterval(() => {\n this.refreshSession()\n }, REFRESH_INTERVAL_MS)\n }\n\n /**\n * Stop the periodic refresh and clean up resources.\n */\n dispose(): void {\n if (this.intervalId !== null) {\n clearInterval(this.intervalId)\n this.intervalId = null\n }\n }\n\n /**\n * Refresh the session by reading the stored token, validating it, and updating state.\n * If no token is stored, initializes an anonymous session.\n * If the token is invalid, signs out and triggers onSessionInvalid (or reloads the page).\n */\n async refreshSession(): Promise<void> {\n let token = await SynapseSessionManager.getStoredToken()\n\n if (!token) {\n token = await this.initAnonymousUserState()\n }\n\n const introspectionResponse = await SynapseSessionManager.validateToken(\n token,\n this.options.maxAge,\n )\n if (introspectionResponse === null) {\n // Token was invalid (e.g. expired). Clear from browser storage and get a fresh anonymous token.\n await SynapseClient.signOut(this.options.defaultRealm)\n if (this.options.onSessionInvalid) {\n this.options.onSessionInvalid()\n } else {\n window.location.reload()\n }\n return\n }\n\n const currentUserId = introspectionResponse.sub\n\n let realmPrincipals: RealmPrincipal | undefined\n try {\n realmPrincipals =\n await SynapseSessionManager.getCurrentRealmPrincipals(token)\n } catch (error) {\n // Special handling for Terms of Service and 2FA errors - allow initialization to continue\n // so the app can prompt the user to complete the required action\n const isTosError =\n error instanceof SynapseClientError &&\n error.reason?.toLowerCase().includes('terms of service')\n const isTwoFaError =\n error instanceof SynapseClientError &&\n error.errorResponse &&\n 'errorCode' in error.errorResponse &&\n error.errorResponse.errorCode === 'TWO_FA_ENABLED_REQUIRED'\n\n if (isTosError || isTwoFaError) {\n const errorType = isTosError\n ? 'Terms of Service not accepted'\n : 'Two factor authentication required'\n console.warn(\n `${errorType}. Session will be initialized without realm principals.`,\n )\n // Continue initialization with partial data - the app's flow will handle this\n this.updateState({\n token,\n hasInitializedSession: true,\n realmId: this.options.defaultRealm,\n userId: currentUserId,\n isAuthenticated: true, // User has a valid token, even if ToS/2FA not complete\n })\n return\n }\n // For any other error, re-throw to be handled by caller\n console.error('Error fetching realm principals: ', error)\n throw error\n }\n\n const isAuthenticated = currentUserId !== realmPrincipals.anonymousUser\n\n /*\n NOTE: It's possible for a user to possess an anonymous token from a different realm (e.g. if they started on an app with a default realm, \n then navigated to a different app with a different default realm). Currently, we will do nothing, so the user will stay in the realm in which they started.\n We may consider different approaches in the future as new requirements arise, such as\n - Replacing the anonymous token with a new one from the default realm (could cause issues if two apps with different realms are used in different tabs)\n - Storing anonymous tokens per-realm\n - Adding UI to choose a realm or account to use\n */\n\n this.updateState({\n token,\n hasInitializedSession: true,\n realmId: realmPrincipals.realmId,\n userId: currentUserId,\n isAuthenticated,\n })\n }\n\n /**\n * Clear the current session by signing out and initializing an anonymous session.\n * Does NOT handle navigation/reload — the caller is responsible for that.\n */\n async clearSession(): Promise<void> {\n await this.initAnonymousUserState()\n await this.refreshSession()\n }\n\n /**\n * Attempt to get the stored access token from the browser cookie.\n * Returns the token string, or undefined if not found or on error.\n */\n static async getStoredToken(): Promise<string | undefined> {\n try {\n return await SynapseClient.getAccessTokenFromCookie()\n } catch (e) {\n console.error('Unable to get the access token: ', e)\n return undefined\n }\n }\n\n /**\n * Validate the token by calling the token introspection service.\n * @return the introspection response if valid, or null if the token is invalid\n */\n static async validateToken(\n accessToken: string,\n maxAge?: number,\n ): Promise<OAuthTokenIntrospectionResponse | null> {\n const synapseClient = new SynapseOpenApiClient({\n accessToken,\n basePath: getEndpoint(BackendDestinationEnum.REPO_ENDPOINT),\n })\n try {\n const response =\n await synapseClient.openIDConnectServicesClient.postAuthV1Oauth2Introspect(\n {\n oAuthTokenIntrospectionRequest: {\n token: accessToken,\n max_age: maxAge,\n },\n },\n )\n if (!response.active) {\n throw new Error('Token is not active.')\n }\n return response\n } catch (e) {\n console.error(\n 'Error validating the access token. Clearing session. Error: ',\n (e as Error).message,\n )\n }\n\n return null\n }\n\n /**\n * Get the realm principals for the current token.\n */\n static async getCurrentRealmPrincipals(\n accessToken: string,\n ): Promise<RealmPrincipal> {\n const synapseClient = new SynapseOpenApiClient({\n accessToken,\n basePath: getEndpoint(BackendDestinationEnum.REPO_ENDPOINT),\n })\n return synapseClient.realmServicesClient.getRepoV1RealmPrincipals()\n }\n\n /**\n * Initialize the session for an anonymous user.\n * @return the new anonymous token.\n */\n private async initAnonymousUserState(): Promise<string> {\n if (this.options.onMissingExpectedAuthentication) {\n this.options.onMissingExpectedAuthentication()\n }\n return SynapseClient.signOut(this.options.defaultRealm)\n }\n\n private updateState(newState: SessionState): void {\n this.state = newState\n this.emitChange()\n }\n\n private emitChange(): void {\n for (const listener of this.listeners) {\n listener()\n }\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSessionManager.js","names":[],"sources":["../../../../src/utils/AppUtils/session/useSessionManager.ts"],"sourcesContent":["import { useTermsOfServiceStatus } from '@/synapse-queries/termsOfService/useTermsOfService'\nimport { useGetTwoFactorEnrollmentStatusWithAccessToken } from '@/synapse-queries/auth/useTwoFactorEnrollment'\nimport { TwoFactorAuthErrorResponse } from '@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse'\nimport {\n useCallback,\n useEffect,\n useRef,\n useState,\n useSyncExternalStore,\n} from 'react'\nimport { useNavigate } from 'react-router'\nimport useDetectSSOCode from '../../hooks/useDetectSSOCode'\nimport { restoreLastPlace } from '../AppUtils'\nimport { ApplicationSessionContextType } from './ApplicationSessionContext'\nimport { SynapseSessionManager } from './SynapseSessionManager'\n\nexport type UseSessionManagerOptions = {\n /** The realm that an unauthenticated user should be signed in to. Defaults to \"0\", the public Synapse realm */\n defaultRealm?: string\n /* If defined, specifies the allowable elapsed time in seconds since the last time the End-User was actively authenticated. If the elapsed time is greater than this value, the session will be cleared and the user will have to re-authenticate. */\n maxAge?: number\n /** Called if the user is not authenticated when the session is initialized. Can be used to trigger an error if authentication is expected. */\n onMissingExpectedAuthentication?: () => void\n /*\n * Callback invoked after the user has successfully signed in through SSO when the purpose of signing in is to disable 2FA on the account.\n * The twoFactorAuthSSOError and twoFaResetToken are passed in the callback and can be used to complete the 2FA reset process.\n * This only needs to be implemented if the app implements the workflow to disable 2FA (i.e. only if the app supports account management).\n */\n onTwoFactorAuthResetThroughSSO?: (\n twoFactorAuthSSOError: TwoFactorAuthErrorResponse,\n twoFaResetToken: string,\n ) => void\n}\n\nexport type UseSessionManagerReturn = {\n sessionContext: ApplicationSessionContextType\n token: string | undefined\n}\n\n/**\n * Hook that manages the Synapse user session lifecycle.\n *\n * Handles token acquisition, validation, SSO detection, and provides\n * all values needed for the ApplicationSessionContext and SynapseContext.\n *\n * This is a React wrapper around {@link SynapseSessionManager}, which contains\n * the framework-agnostic session logic. Session state is synchronized via\n * `useSyncExternalStore`.\n *\n * Must be called within a react-router Router and a react-query QueryClientProvider.\n */\nexport function useSessionManager(\n options: UseSessionManagerOptions = {},\n): UseSessionManagerReturn {\n const {\n defaultRealm = '0',\n maxAge,\n onMissingExpectedAuthentication,\n onTwoFactorAuthResetThroughSSO,\n } = options\n\n const navigate = useNavigate()\n\n const [twoFactorAuthSSOError, setTwoFactorAuthSSOError] = useState<\n TwoFactorAuthErrorResponse | undefined\n >()\n\n // Store latest callback refs so the manager doesn't need to be recreated when callbacks change\n const onMissingExpectedAuthenticationRef = useRef(\n onMissingExpectedAuthentication,\n )\n onMissingExpectedAuthenticationRef.current = onMissingExpectedAuthentication\n\n const [manager] = useState(\n () =>\n new SynapseSessionManager({\n defaultRealm,\n maxAge,\n onMissingExpectedAuthentication: () => {\n onMissingExpectedAuthenticationRef.current?.()\n },\n }),\n )\n\n // Keep mutable options in sync with props\n useEffect(() => {\n manager.setOptions({ defaultRealm, maxAge })\n }, [manager, defaultRealm, maxAge])\n\n const sessionState = useSyncExternalStore(\n manager.subscribe,\n manager.getSnapshot,\n manager.getServerSnapshot,\n )\n\n useEffect(() => {\n manager.start()\n return () => manager.dispose()\n }, [manager])\n\n const { data: tosStatus } = useTermsOfServiceStatus(sessionState.token, {\n enabled: sessionState.isAuthenticated,\n })\n const { data: twoFactorStatus } =\n useGetTwoFactorEnrollmentStatusWithAccessToken(sessionState.token, {\n enabled: sessionState.isAuthenticated,\n })\n\n const refreshSession = useCallback(async () => {\n setTwoFactorAuthSSOError(undefined)\n await manager.refreshSession()\n }, [manager])\n\n const clearSession = useCallback(\n async (onBeforeReload?: () => void) => {\n await manager.clearSession()\n if (onBeforeReload) {\n onBeforeReload()\n }\n // In all cases when the session is cleared we should refresh the page to ensure private data is not being shown\n navigate(0)\n },\n [navigate, manager],\n )\n\n const { isLoading: isLoadingSSO } = useDetectSSOCode({\n onSignInComplete: () => {\n restoreLastPlace(navigate)\n refreshSession()\n },\n onTwoFactorAuthRequired: twoFactorAuthError => {\n setTwoFactorAuthSSOError(twoFactorAuthError)\n },\n onTwoFactorAuthResetTokenPresent: (twoFactorAuthError, twoFaResetToken) => {\n setTwoFactorAuthSSOError(twoFactorAuthError)\n if (onTwoFactorAuthResetThroughSSO) {\n onTwoFactorAuthResetThroughSSO(twoFactorAuthError, twoFaResetToken)\n }\n },\n onError: (err: unknown) => {\n // Throw the error so it propagates to an error boundary\n throw err\n },\n isInitializingSession: !sessionState.hasInitializedSession,\n isAuthenticated: sessionState.isAuthenticated,\n })\n\n const sessionContext: ApplicationSessionContextType = {\n token: sessionState.token,\n userId: sessionState.userId,\n realmId: sessionState.realmId,\n isAuthenticated: sessionState.isAuthenticated,\n termsOfServiceStatus: tosStatus,\n refreshSession,\n clearSession,\n isLoadingSSO,\n twoFactorAuthSSOErrorResponse: twoFactorAuthSSOError,\n hasInitializedSession: sessionState.hasInitializedSession,\n twoFactorStatus,\n }\n\n return { sessionContext, token: sessionState.token }\n}\n"],"mappings":";;;;;;;;AAmDA,SAAgB,EACd,IAAoC,EAAE,EACb;CACzB,IAAM,EACJ,kBAAe,KACf,WACA,oCACA,sCACE,GAEE,IAAW,GAAa,EAExB,CAAC,GAAuB,KAA4B,GAEvD,EAGG,IAAqC,EACzC,EACD;AACD,GAAmC,UAAU;CAE7C,IAAM,CAAC,KAAW,QAEd,IAAI,EAAsB;EACxB;EACA;EACA,uCAAuC;AACrC,KAAmC,WAAW;;EAEjD,CAAC,CACL;AAGD,SAAgB;AACd,IAAQ,WAAW;GAAE;GAAc;GAAQ,CAAC;IAC3C;EAAC;EAAS;EAAc;EAAO,CAAC;CAEnC,IAAM,IAAe,EACnB,EAAQ,WACR,EAAQ,aACR,EAAQ,kBACT;AAED,UACE,EAAQ,OAAO,QACF,EAAQ,SAAS,GAC7B,CAAC,EAAQ,CAAC;CAEb,IAAM,EAAE,MAAM,MAAc,EAAwB,EAAa,OAAO,EACtE,SAAS,EAAa,iBACvB,CAAC,EACI,EAAE,MAAM,MACZ,EAA+C,EAAa,OAAO,EACjE,SAAS,EAAa,iBACvB,CAAC,EAEE,IAAiB,EAAY,YAAY;AAE7C,EADA,EAAyB,KAAA,EAAU,EACnC,MAAM,EAAQ,gBAAgB;IAC7B,CAAC,EAAQ,CAAC,EAEP,IAAe,EACnB,OAAO,MAAgC;AAMrC,EALA,MAAM,EAAQ,cAAc,EACxB,KACF,GAAgB,EAGlB,EAAS,EAAE;IAEb,CAAC,GAAU,EAAQ,CACpB,EAEK,EAAE,WAAW,MAAiB,EAAiB;EACnD,wBAAwB;AAEtB,GADA,EAAiB,EAAS,EAC1B,GAAgB;;EAElB,0BAAyB,MAAsB;AAC7C,KAAyB,EAAmB;;EAE9C,mCAAmC,GAAoB,MAAoB;AAEzE,GADA,EAAyB,EAAmB,EACxC,KACF,EAA+B,GAAoB,EAAgB;;EAGvE,UAAU,MAAiB;AAEzB,SAAM;;EAER,uBAAuB,CAAC,EAAa;EACrC,iBAAiB,EAAa;EAC/B,CAAC;AAgBF,QAAO;EAAE,gBAAA;GAbP,OAAO,EAAa;GACpB,QAAQ,EAAa;GACrB,SAAS,EAAa;GACtB,iBAAiB,EAAa;GAC9B,sBAAsB;GACtB;GACA;GACA;GACA,+BAA+B;GAC/B,uBAAuB,EAAa;GACpC;GAGO;EAAgB,OAAO,EAAa;EAAO"}
1
+ {"version":3,"file":"useSessionManager.js","names":[],"sources":["../../../../src/utils/AppUtils/session/useSessionManager.ts"],"sourcesContent":["import { useTermsOfServiceStatus } from '@/synapse-queries/termsOfService/useTermsOfService'\nimport { useGetTwoFactorEnrollmentStatusWithAccessToken } from '@/synapse-queries/auth/useTwoFactorEnrollment'\nimport { TwoFactorAuthErrorResponse } from '@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse'\nimport {\n useCallback,\n useEffect,\n useRef,\n useState,\n useSyncExternalStore,\n} from 'react'\nimport { useNavigate } from 'react-router'\nimport useDetectSSOCode from '../../hooks/useDetectSSOCode'\nimport { restoreLastPlace } from '../AppUtils'\nimport { ApplicationSessionContextType } from './ApplicationSessionContext'\nimport { SynapseSessionManager } from './SynapseSessionManager'\n\nexport type UseSessionManagerOptions = {\n /** The realm that an unauthenticated user should be signed in to. Defaults to \"0\", the public Synapse realm */\n defaultRealm?: string\n /* If defined, specifies the allowable elapsed time in seconds since the last time the End-User was actively authenticated. If the elapsed time is greater than this value, the session will be cleared and the user will have to re-authenticate. */\n maxAge?: number\n /** Called if the user is not authenticated when the session is initialized. Can be used to trigger an error if authentication is expected. */\n onMissingExpectedAuthentication?: () => void\n /*\n * Callback invoked after the user has successfully signed in through SSO when the purpose of signing in is to disable 2FA on the account.\n * The twoFactorAuthSSOError and twoFaResetToken are passed in the callback and can be used to complete the 2FA reset process.\n * This only needs to be implemented if the app implements the workflow to disable 2FA (i.e. only if the app supports account management).\n */\n onTwoFactorAuthResetThroughSSO?: (\n twoFactorAuthSSOError: TwoFactorAuthErrorResponse,\n twoFaResetToken: string,\n ) => void\n}\n\nexport type UseSessionManagerReturn = {\n sessionContext: ApplicationSessionContextType\n token: string | undefined\n}\n\n/**\n * Hook that manages the Synapse user session lifecycle.\n *\n * Handles token acquisition, validation, SSO detection, and provides\n * all values needed for the ApplicationSessionContext and SynapseContext.\n *\n * This is a React wrapper around {@link SynapseSessionManager}, which contains\n * the framework-agnostic session logic. Session state is synchronized via\n * `useSyncExternalStore`.\n *\n * Must be called within a react-router Router and a react-query QueryClientProvider.\n */\nexport function useSessionManager(\n options: UseSessionManagerOptions = {},\n): UseSessionManagerReturn {\n const {\n defaultRealm = '0',\n maxAge,\n onMissingExpectedAuthentication,\n onTwoFactorAuthResetThroughSSO,\n } = options\n\n const navigate = useNavigate()\n\n const [twoFactorAuthSSOError, setTwoFactorAuthSSOError] = useState<\n TwoFactorAuthErrorResponse | undefined\n >()\n\n // Store latest callback refs so the manager doesn't need to be recreated when callbacks change\n const onMissingExpectedAuthenticationRef = useRef(\n onMissingExpectedAuthentication,\n )\n onMissingExpectedAuthenticationRef.current = onMissingExpectedAuthentication\n\n const [manager] = useState(\n () =>\n new SynapseSessionManager({\n defaultRealm,\n maxAge,\n onMissingExpectedAuthentication: () => {\n onMissingExpectedAuthenticationRef.current?.()\n },\n }),\n )\n\n // Keep mutable options in sync with props\n useEffect(() => {\n manager.setOptions({ defaultRealm, maxAge })\n }, [manager, defaultRealm, maxAge])\n\n const sessionState = useSyncExternalStore(\n manager.subscribe,\n manager.getSnapshot,\n manager.getServerSnapshot,\n )\n\n useEffect(() => {\n manager.start()\n return () => manager.dispose()\n }, [manager])\n\n const { data: tosStatus } = useTermsOfServiceStatus(sessionState.token, {\n enabled: sessionState.isAuthenticated,\n })\n const { data: twoFactorStatus } =\n useGetTwoFactorEnrollmentStatusWithAccessToken(sessionState.token, {\n enabled: sessionState.isAuthenticated,\n })\n\n const refreshSession = useCallback(async () => {\n setTwoFactorAuthSSOError(undefined)\n await manager.refreshSession()\n }, [manager])\n\n const clearSession = useCallback(\n async (onBeforeReload?: () => void) => {\n await manager.clearSession()\n if (onBeforeReload) {\n onBeforeReload()\n }\n // In all cases when the session is cleared we should refresh the page to ensure private data is not being shown\n navigate(0)\n },\n [navigate, manager],\n )\n\n const { isLoading: isLoadingSSO } = useDetectSSOCode({\n onSignInComplete: () => {\n restoreLastPlace(navigate)\n refreshSession()\n },\n onTwoFactorAuthRequired: twoFactorAuthError => {\n setTwoFactorAuthSSOError(twoFactorAuthError)\n },\n onTwoFactorAuthResetTokenPresent: (twoFactorAuthError, twoFaResetToken) => {\n setTwoFactorAuthSSOError(twoFactorAuthError)\n if (onTwoFactorAuthResetThroughSSO) {\n onTwoFactorAuthResetThroughSSO(twoFactorAuthError, twoFaResetToken)\n }\n },\n onError: (err: unknown) => {\n // Throw the error so it propagates to an error boundary\n throw err\n },\n isInitializingSession: !sessionState.hasInitializedSession,\n isAuthenticated: sessionState.isAuthenticated,\n })\n\n const sessionContext: ApplicationSessionContextType = {\n token: sessionState.token,\n userId: sessionState.userId,\n realmId: sessionState.realmId,\n isAuthenticated: sessionState.isAuthenticated,\n termsOfServiceStatus: tosStatus,\n refreshSession,\n clearSession,\n isLoadingSSO,\n twoFactorAuthSSOErrorResponse: twoFactorAuthSSOError,\n hasInitializedSession: sessionState.hasInitializedSession,\n twoFactorStatus,\n }\n\n return { sessionContext, token: sessionState.token }\n}\n"],"mappings":";;;;;;;;AAmDA,SAAgB,EACd,IAAoC,CAAC,GACZ;CACzB,IAAM,EACJ,kBAAe,KACf,WACA,oCACA,sCACE,GAEE,IAAW,EAAY,GAEvB,CAAC,GAAuB,KAA4B,EAExD,GAGI,IAAqC,EACzC,CACF;CACA,EAAmC,UAAU;CAE7C,IAAM,CAAC,KAAW,QAEd,IAAI,EAAsB;EACxB;EACA;EACA,uCAAuC;GACrC,EAAmC,UAAU;EAC/C;CACF,CAAC,CACL;CAGA,QAAgB;EACd,EAAQ,WAAW;GAAE;GAAc;EAAO,CAAC;CAC7C,GAAG;EAAC;EAAS;EAAc;CAAM,CAAC;CAElC,IAAM,IAAe,EACnB,EAAQ,WACR,EAAQ,aACR,EAAQ,iBACV;CAEA,SACE,EAAQ,MAAM,SACD,EAAQ,QAAQ,IAC5B,CAAC,CAAO,CAAC;CAEZ,IAAM,EAAE,MAAM,MAAc,EAAwB,EAAa,OAAO,EACtE,SAAS,EAAa,gBACxB,CAAC,GACK,EAAE,MAAM,MACZ,EAA+C,EAAa,OAAO,EACjE,SAAS,EAAa,gBACxB,CAAC,GAEG,IAAiB,EAAY,YAAY;EAE7C,AADA,EAAyB,KAAA,CAAS,GAClC,MAAM,EAAQ,eAAe;CAC/B,GAAG,CAAC,CAAO,CAAC,GAEN,IAAe,EACnB,OAAO,MAAgC;EAMrC,AALA,MAAM,EAAQ,aAAa,GACvB,KACF,EAAe,GAGjB,EAAS,CAAC;CACZ,GACA,CAAC,GAAU,CAAO,CACpB,GAEM,EAAE,WAAW,MAAiB,EAAiB;EACnD,wBAAwB;GAEtB,AADA,EAAiB,CAAQ,GACzB,EAAe;EACjB;EACA,0BAAyB,MAAsB;GAC7C,EAAyB,CAAkB;EAC7C;EACA,mCAAmC,GAAoB,MAAoB;GAEzE,AADA,EAAyB,CAAkB,GACvC,KACF,EAA+B,GAAoB,CAAe;EAEtE;EACA,UAAU,MAAiB;GAEzB,MAAM;EACR;EACA,uBAAuB,CAAC,EAAa;EACrC,iBAAiB,EAAa;CAChC,CAAC;CAgBD,OAAO;EAAE,gBAAA;GAbP,OAAO,EAAa;GACpB,QAAQ,EAAa;GACrB,SAAS,EAAa;GACtB,iBAAiB,EAAa;GAC9B,sBAAsB;GACtB;GACA;GACA;GACA,+BAA+B;GAC/B,uBAAuB,EAAa;GACpC;EAGO;EAAgB,OAAO,EAAa;CAAM;AACrD"}
@@ -1 +1 @@
1
- {"version":3,"file":"ContentTypeUtils.js","names":[],"sources":["../../src/utils/ContentTypeUtils.ts"],"sourcesContent":["// Copied from lib-shared-models ContentTypeUtils.class\n\nconst CODE_EXTENSIONS = [\n '.awk',\n '.bat',\n '.btm',\n '.c',\n '.cmd',\n '.cpp',\n '.cxx',\n '.def',\n '.dlg',\n '.dpc',\n '.dpj',\n '.dtd',\n '.h',\n '.hdl',\n '.hpp',\n '.hrc',\n '.html',\n '.hxx',\n '.inc',\n '.ini',\n '.inl',\n '.ins',\n '.ipy',\n '.java',\n '.js',\n '.jsp',\n '.l',\n '.lgt',\n '.ll',\n '.par',\n '.pl',\n '.py',\n '.r',\n '.rc',\n '.rdb',\n '.res',\n '.s',\n '.sbl',\n '.scp',\n '.sh',\n '.sql',\n '.src',\n '.srs',\n '.xml',\n '.xrb',\n '.y',\n '.yaml',\n '.yxx',\n]\n\nexport const PLAIN_TEXT = 'text/plain'\nexport const TEXT_COMMA_SEPARATED_VALUES = 'text/csv'\nexport const TEXT_TAB_SEPARATED_VALUES = 'text/tab-separated-values'\nexport const APPLICATION_OCTET_STREAM = 'application/octet-stream'\n\nconst WEB_CODE_EXTENSIONS = ['.cwl', '.wdl', '.json']\n\nexport function isRecognizedCodeFileName(fileName: string): boolean {\n let isCodeFile = false\n if (fileName != null) {\n const lastDot = fileName.lastIndexOf('.')\n if (lastDot > -1) {\n const extension = fileName.substring(lastDot).toLowerCase()\n isCodeFile = CODE_EXTENSIONS.includes(extension)\n }\n }\n\n return isCodeFile\n}\n\nfunction getExtension(fileName: string): string | null {\n if (fileName != null) {\n const lastDot = fileName.lastIndexOf('.')\n if (lastDot > -1) {\n return fileName.substring(lastDot + 1).toLowerCase()\n }\n }\n return null\n}\n\nfunction isWebRecognizedCodeFileName(fileName: string): boolean {\n let isPlainText = false\n const extension = getExtension(fileName)\n if (extension != null) {\n isPlainText = WEB_CODE_EXTENSIONS.includes('.' + extension)\n }\n return isPlainText\n}\n\n/**\n * Given an initial Content Type and a file name, returns an appropriate Content\n * Type if the initial value is null or empty. Otherwise, the original Content\n * Type is returned.\n * @param type\n * @param fileName\n */\nexport function fixDefaultContentType(\n type: string | null,\n fileName: string,\n): string {\n let contentType = type\n const lowercaseFilename = fileName.toLowerCase()\n if (type == null || type.trim().length == 0) {\n if (\n isRecognizedCodeFileName(fileName) ||\n isWebRecognizedCodeFileName(fileName) ||\n lowercaseFilename.endsWith('.txt')\n ) {\n contentType = PLAIN_TEXT\n } else if (\n lowercaseFilename.endsWith('.tsv') ||\n lowercaseFilename.endsWith('.tab')\n ) {\n contentType = TEXT_TAB_SEPARATED_VALUES\n } else if (lowercaseFilename.endsWith('.csv')) {\n contentType = TEXT_COMMA_SEPARATED_VALUES\n } else {\n // fall back to the least specific official MIME type...\n contentType = APPLICATION_OCTET_STREAM\n }\n }\n return contentType!\n}\n"],"mappings":";AAEA,IAAM,IAAkB,6PAiDvB,EAEY,IAAa,cACb,IAA8B,YAC9B,IAA4B,6BAC5B,IAA2B,4BAElC,IAAsB;CAAC;CAAQ;CAAQ;CAAQ;AAErD,SAAgB,EAAyB,GAA2B;CAClE,IAAI,IAAa;AACjB,KAAI,KAAY,MAAM;EACpB,IAAM,IAAU,EAAS,YAAY,IAAI;AACzC,MAAI,IAAU,IAAI;GAChB,IAAM,IAAY,EAAS,UAAU,EAAQ,CAAC,aAAa;AAC3D,OAAa,EAAgB,SAAS,EAAU;;;AAIpD,QAAO;;AAGT,SAAS,EAAa,GAAiC;AACrD,KAAI,KAAY,MAAM;EACpB,IAAM,IAAU,EAAS,YAAY,IAAI;AACzC,MAAI,IAAU,GACZ,QAAO,EAAS,UAAU,IAAU,EAAE,CAAC,aAAa;;AAGxD,QAAO;;AAGT,SAAS,EAA4B,GAA2B;CAC9D,IAAI,IAAc,IACZ,IAAY,EAAa,EAAS;AAIxC,QAHI,KAAa,SACf,IAAc,EAAoB,SAAS,MAAM,EAAU,GAEtD;;AAUT,SAAgB,EACd,GACA,GACQ;CACR,IAAI,IAAc,GACZ,IAAoB,EAAS,aAAa;AAoBhD,SAnBI,KAAQ,QAAQ,EAAK,MAAM,CAAC,UAAU,OACxC,AAeE,IAdA,EAAyB,EAAS,IAClC,EAA4B,EAAS,IACrC,EAAkB,SAAS,OAAO,GAEpB,IAEd,EAAkB,SAAS,OAAO,IAClC,EAAkB,SAAS,OAAO,GAEpB,IACL,EAAkB,SAAS,OAAO,GAC7B,IAGA,IAGX"}
1
+ {"version":3,"file":"ContentTypeUtils.js","names":[],"sources":["../../src/utils/ContentTypeUtils.ts"],"sourcesContent":["// Copied from lib-shared-models ContentTypeUtils.class\n\nconst CODE_EXTENSIONS = [\n '.awk',\n '.bat',\n '.btm',\n '.c',\n '.cmd',\n '.cpp',\n '.cxx',\n '.def',\n '.dlg',\n '.dpc',\n '.dpj',\n '.dtd',\n '.h',\n '.hdl',\n '.hpp',\n '.hrc',\n '.html',\n '.hxx',\n '.inc',\n '.ini',\n '.inl',\n '.ins',\n '.ipy',\n '.java',\n '.js',\n '.jsp',\n '.l',\n '.lgt',\n '.ll',\n '.par',\n '.pl',\n '.py',\n '.r',\n '.rc',\n '.rdb',\n '.res',\n '.s',\n '.sbl',\n '.scp',\n '.sh',\n '.sql',\n '.src',\n '.srs',\n '.xml',\n '.xrb',\n '.y',\n '.yaml',\n '.yxx',\n]\n\nexport const PLAIN_TEXT = 'text/plain'\nexport const TEXT_COMMA_SEPARATED_VALUES = 'text/csv'\nexport const TEXT_TAB_SEPARATED_VALUES = 'text/tab-separated-values'\nexport const APPLICATION_OCTET_STREAM = 'application/octet-stream'\n\nconst WEB_CODE_EXTENSIONS = ['.cwl', '.wdl', '.json']\n\nexport function isRecognizedCodeFileName(fileName: string): boolean {\n let isCodeFile = false\n if (fileName != null) {\n const lastDot = fileName.lastIndexOf('.')\n if (lastDot > -1) {\n const extension = fileName.substring(lastDot).toLowerCase()\n isCodeFile = CODE_EXTENSIONS.includes(extension)\n }\n }\n\n return isCodeFile\n}\n\nfunction getExtension(fileName: string): string | null {\n if (fileName != null) {\n const lastDot = fileName.lastIndexOf('.')\n if (lastDot > -1) {\n return fileName.substring(lastDot + 1).toLowerCase()\n }\n }\n return null\n}\n\nfunction isWebRecognizedCodeFileName(fileName: string): boolean {\n let isPlainText = false\n const extension = getExtension(fileName)\n if (extension != null) {\n isPlainText = WEB_CODE_EXTENSIONS.includes('.' + extension)\n }\n return isPlainText\n}\n\n/**\n * Given an initial Content Type and a file name, returns an appropriate Content\n * Type if the initial value is null or empty. Otherwise, the original Content\n * Type is returned.\n * @param type\n * @param fileName\n */\nexport function fixDefaultContentType(\n type: string | null,\n fileName: string,\n): string {\n let contentType = type\n const lowercaseFilename = fileName.toLowerCase()\n if (type == null || type.trim().length == 0) {\n if (\n isRecognizedCodeFileName(fileName) ||\n isWebRecognizedCodeFileName(fileName) ||\n lowercaseFilename.endsWith('.txt')\n ) {\n contentType = PLAIN_TEXT\n } else if (\n lowercaseFilename.endsWith('.tsv') ||\n lowercaseFilename.endsWith('.tab')\n ) {\n contentType = TEXT_TAB_SEPARATED_VALUES\n } else if (lowercaseFilename.endsWith('.csv')) {\n contentType = TEXT_COMMA_SEPARATED_VALUES\n } else {\n // fall back to the least specific official MIME type...\n contentType = APPLICATION_OCTET_STREAM\n }\n }\n return contentType!\n}\n"],"mappings":";AAEA,IAAM,IAAkB,4PAiDxB,GAEa,IAAa,cACb,IAA8B,YAC9B,IAA4B,6BAC5B,IAA2B,4BAElC,IAAsB;CAAC;CAAQ;CAAQ;AAAO;AAEpD,SAAgB,EAAyB,GAA2B;CAClE,IAAI,IAAa;CACjB,IAAI,KAAY,MAAM;EACpB,IAAM,IAAU,EAAS,YAAY,GAAG;EACxC,IAAI,IAAU,IAAI;GAChB,IAAM,IAAY,EAAS,UAAU,CAAO,EAAE,YAAY;GAC1D,IAAa,EAAgB,SAAS,CAAS;EACjD;CACF;CAEA,OAAO;AACT;AAEA,SAAS,EAAa,GAAiC;CACrD,IAAI,KAAY,MAAM;EACpB,IAAM,IAAU,EAAS,YAAY,GAAG;EACxC,IAAI,IAAU,IACZ,OAAO,EAAS,UAAU,IAAU,CAAC,EAAE,YAAY;CAEvD;CACA,OAAO;AACT;AAEA,SAAS,EAA4B,GAA2B;CAC9D,IAAI,IAAc,IACZ,IAAY,EAAa,CAAQ;CAIvC,OAHI,KAAa,SACf,IAAc,EAAoB,SAAS,MAAM,CAAS,IAErD;AACT;AASA,SAAgB,EACd,GACA,GACQ;CACR,IAAI,IAAc,GACZ,IAAoB,EAAS,YAAY;CAoB/C,QAnBI,KAAQ,QAAQ,EAAK,KAAK,EAAE,UAAU,OACxC,AAeE,IAdA,EAAyB,CAAQ,KACjC,EAA4B,CAAQ,KACpC,EAAkB,SAAS,MAAM,IAEnB,IAEd,EAAkB,SAAS,MAAM,KACjC,EAAkB,SAAS,MAAM,IAEnB,IACL,EAAkB,SAAS,MAAM,IAC5B,IAGA,IAGX;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"OrientationBannerConstants.js","names":[],"sources":["../../src/utils/OrientationBannerConstants.ts"],"sourcesContent":["const OrientationBannerNameStrings = [\n 'Challenges',\n 'CohortBuilder',\n 'DataAccessManagement',\n 'Datasets',\n 'Discussions',\n 'Docker',\n 'Favorites',\n 'Files',\n 'Following',\n 'Projects',\n 'Tables',\n 'Teams',\n 'TrashCan',\n 'Wikis',\n 'Donate',\n 'UnderConstruction',\n] as const\nexport type OrientationBannerName =\n (typeof OrientationBannerNameStrings)[number]\n\nexport function getOrientationBannerKey(name: OrientationBannerName) {\n return 'orientation_banner_' + name.toLowerCase() + '_dismissed'\n}\n\nexport const ORIENTATION_BANNER_KEYS = OrientationBannerNameStrings.map(el =>\n getOrientationBannerKey(el),\n)\n"],"mappings":";AAAA,IAAM,IAA+B;CACnC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAID,SAAgB,EAAwB,GAA6B;AACnE,QAAO,wBAAwB,EAAK,aAAa,GAAG;;AAGtD,IAAa,IAA0B,EAA6B,KAAI,MACtE,EAAwB,EAAG,CAC5B"}
1
+ {"version":3,"file":"OrientationBannerConstants.js","names":[],"sources":["../../src/utils/OrientationBannerConstants.ts"],"sourcesContent":["const OrientationBannerNameStrings = [\n 'Challenges',\n 'CohortBuilder',\n 'DataAccessManagement',\n 'Datasets',\n 'Discussions',\n 'Docker',\n 'Favorites',\n 'Files',\n 'Following',\n 'Projects',\n 'Tables',\n 'Teams',\n 'TrashCan',\n 'Wikis',\n 'Donate',\n 'UnderConstruction',\n] as const\nexport type OrientationBannerName =\n (typeof OrientationBannerNameStrings)[number]\n\nexport function getOrientationBannerKey(name: OrientationBannerName) {\n return 'orientation_banner_' + name.toLowerCase() + '_dismissed'\n}\n\nexport const ORIENTATION_BANNER_KEYS = OrientationBannerNameStrings.map(el =>\n getOrientationBannerKey(el),\n)\n"],"mappings":";AAAA,IAAM,IAA+B;CACnC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAIA,SAAgB,EAAwB,GAA6B;CACnE,OAAO,wBAAwB,EAAK,YAAY,IAAI;AACtD;AAEA,IAAa,IAA0B,EAA6B,KAAI,MACtE,EAAwB,CAAE,CAC5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"PermissionLevelToAccessType.js","names":[],"sources":["../../src/utils/PermissionLevelToAccessType.ts"],"sourcesContent":["import { ACCESS_TYPE } from '@sage-bionetworks/synapse-types'\n\nconst entityPermissionLevels = [\n 'CAN_VIEW',\n 'CAN_DOWNLOAD',\n 'CAN_EDIT',\n 'CAN_EDIT_DELETE',\n 'CAN_ADMINISTER',\n] as const\nexport type EntityPermissionsLevel = (typeof entityPermissionLevels)[number]\n\nconst accessRequirementPermissionLevels = [\n 'CAN_REVIEW_SUBMISSIONS',\n 'IS_EXEMPTION_ELIGIBLE',\n 'CAN_REVIEW_SUBMISSIONS_AND_IS_EXEMPTION_ELIGIBLE',\n] as const\n\nexport type AccessRequirementPermissionsLevel =\n (typeof accessRequirementPermissionLevels)[number]\n\nconst oauthClientPermissionLevels = ['CAN_ADMINISTER_OAUTH_CLIENT'] as const\n\nexport type OAuthClientPermissionsLevel =\n (typeof oauthClientPermissionLevels)[number]\n\nconst portalClientPermissionLevels = ['CAN_ADMINISTER_PORTAL'] as const\n\nexport type PortalClientPermissionsLevel =\n (typeof portalClientPermissionLevels)[number]\n\nexport type PermissionLevel =\n | EntityPermissionsLevel\n | AccessRequirementPermissionsLevel\n | OAuthClientPermissionsLevel\n | PortalClientPermissionsLevel\n\nconst permissionLevelToAccessType: Record<PermissionLevel, ACCESS_TYPE[]> = {\n // Entity\n CAN_VIEW: [ACCESS_TYPE.READ],\n CAN_DOWNLOAD: [ACCESS_TYPE.READ, ACCESS_TYPE.DOWNLOAD],\n CAN_EDIT: [\n ACCESS_TYPE.CREATE,\n ACCESS_TYPE.READ,\n ACCESS_TYPE.DOWNLOAD,\n ACCESS_TYPE.UPDATE,\n ],\n CAN_EDIT_DELETE: [\n ACCESS_TYPE.CREATE,\n ACCESS_TYPE.READ,\n ACCESS_TYPE.DOWNLOAD,\n ACCESS_TYPE.UPDATE,\n ACCESS_TYPE.DELETE,\n ],\n CAN_ADMINISTER: [\n ACCESS_TYPE.READ,\n ACCESS_TYPE.DOWNLOAD,\n ACCESS_TYPE.UPDATE,\n ACCESS_TYPE.DELETE,\n ACCESS_TYPE.CREATE,\n ACCESS_TYPE.CHANGE_PERMISSIONS,\n ACCESS_TYPE.CHANGE_SETTINGS,\n ACCESS_TYPE.MODERATE,\n ],\n\n // Access Requirements\n CAN_REVIEW_SUBMISSIONS: [ACCESS_TYPE.REVIEW_SUBMISSIONS],\n IS_EXEMPTION_ELIGIBLE: [ACCESS_TYPE.EXEMPTION_ELIGIBLE],\n CAN_REVIEW_SUBMISSIONS_AND_IS_EXEMPTION_ELIGIBLE: [\n ACCESS_TYPE.EXEMPTION_ELIGIBLE,\n ACCESS_TYPE.REVIEW_SUBMISSIONS,\n ],\n CAN_ADMINISTER_OAUTH_CLIENT: [\n ACCESS_TYPE.READ,\n ACCESS_TYPE.CHANGE_PERMISSIONS,\n ACCESS_TYPE.DELETE,\n ACCESS_TYPE.UPDATE,\n ],\n CAN_ADMINISTER_PORTAL: [\n ACCESS_TYPE.CHANGE_PERMISSIONS,\n ACCESS_TYPE.CREATE,\n ACCESS_TYPE.UPDATE,\n ACCESS_TYPE.READ,\n ACCESS_TYPE.DELETE,\n ],\n}\n\nconst prepAccessTypeForComparison = (accessType: ACCESS_TYPE[]) => {\n return JSON.stringify(accessType.sort())\n}\n\nexport const getPermissionLevelFromAccessType = (accessType: ACCESS_TYPE[]) => {\n const lookupValue = prepAccessTypeForComparison(accessType)\n const permissionLevel = Object.keys(permissionLevelToAccessType).find(key => {\n return (\n lookupValue ===\n prepAccessTypeForComparison(\n permissionLevelToAccessType[key as PermissionLevel],\n )\n )\n })\n\n return permissionLevel as PermissionLevel\n}\n\nexport const getAccessTypeFromPermissionLevel = (\n permissionLevel: PermissionLevel,\n) => {\n return permissionLevelToAccessType[permissionLevel]\n}\n\nexport const permissionLevelToLabel: Record<PermissionLevel, string> = {\n // Entity\n CAN_VIEW: 'Can view',\n CAN_DOWNLOAD: 'Can download',\n CAN_EDIT: 'Can edit',\n CAN_EDIT_DELETE: 'Can edit & delete',\n CAN_ADMINISTER: 'Administrator',\n\n // Access requirement\n CAN_REVIEW_SUBMISSIONS: 'Can Review',\n IS_EXEMPTION_ELIGIBLE: 'Exempt Eligible',\n CAN_REVIEW_SUBMISSIONS_AND_IS_EXEMPTION_ELIGIBLE:\n 'Can Review & Exempt Eligible',\n\n // OAuth Client\n CAN_ADMINISTER_OAUTH_CLIENT: 'Administrator',\n\n // Portal\n CAN_ADMINISTER_PORTAL: 'Administrator',\n}\n"],"mappings":";;;;;;;IAoCM,IAAsE;CAE1E,UAAU,CAAC,EAAY,KAAK;CAC5B,cAAc,CAAC,EAAY,MAAM,EAAY,SAAS;CACtD,UAAU;EACR,EAAY;EACZ,EAAY;EACZ,EAAY;EACZ,EAAY;EACb;CACD,iBAAiB;EACf,EAAY;EACZ,EAAY;EACZ,EAAY;EACZ,EAAY;EACZ,EAAY;EACb;CACD,gBAAgB;EACd,EAAY;EACZ,EAAY;EACZ,EAAY;EACZ,EAAY;EACZ,EAAY;EACZ,EAAY;EACZ,EAAY;EACZ,EAAY;EACb;CAGD,wBAAwB,CAAC,EAAY,mBAAmB;CACxD,uBAAuB,CAAC,EAAY,mBAAmB;CACvD,kDAAkD,CAChD,EAAY,oBACZ,EAAY,mBACb;CACD,6BAA6B;EAC3B,EAAY;EACZ,EAAY;EACZ,EAAY;EACZ,EAAY;EACb;CACD,uBAAuB;EACrB,EAAY;EACZ,EAAY;EACZ,EAAY;EACZ,EAAY;EACZ,EAAY;EACb;CACF,EAEK,KAA+B,MAC5B,KAAK,UAAU,EAAW,MAAM,CAAC,EAG7B,KAAoC,MAA8B;CAC7E,IAAM,IAAc,EAA4B,EAAW;AAU3D,QATwB,OAAO,KAAK,EAA4B,CAAC,MAAK,MAElE,MACA,EACE,EAA4B,GAC7B,CAIE;GAGI,KACX,MAEO,EAA4B,IAGxB,IAA0D;CAErE,UAAU;CACV,cAAc;CACd,UAAU;CACV,iBAAiB;CACjB,gBAAgB;CAGhB,wBAAwB;CACxB,uBAAuB;CACvB,kDACE;CAGF,6BAA6B;CAG7B,uBAAuB;CACxB"}
1
+ {"version":3,"file":"PermissionLevelToAccessType.js","names":[],"sources":["../../src/utils/PermissionLevelToAccessType.ts"],"sourcesContent":["import { ACCESS_TYPE } from '@sage-bionetworks/synapse-types'\n\nconst entityPermissionLevels = [\n 'CAN_VIEW',\n 'CAN_DOWNLOAD',\n 'CAN_EDIT',\n 'CAN_EDIT_DELETE',\n 'CAN_ADMINISTER',\n] as const\nexport type EntityPermissionsLevel = (typeof entityPermissionLevels)[number]\n\nconst accessRequirementPermissionLevels = [\n 'CAN_REVIEW_SUBMISSIONS',\n 'IS_EXEMPTION_ELIGIBLE',\n 'CAN_REVIEW_SUBMISSIONS_AND_IS_EXEMPTION_ELIGIBLE',\n] as const\n\nexport type AccessRequirementPermissionsLevel =\n (typeof accessRequirementPermissionLevels)[number]\n\nconst oauthClientPermissionLevels = ['CAN_ADMINISTER_OAUTH_CLIENT'] as const\n\nexport type OAuthClientPermissionsLevel =\n (typeof oauthClientPermissionLevels)[number]\n\nconst portalClientPermissionLevels = ['CAN_ADMINISTER_PORTAL'] as const\n\nexport type PortalClientPermissionsLevel =\n (typeof portalClientPermissionLevels)[number]\n\nexport type PermissionLevel =\n | EntityPermissionsLevel\n | AccessRequirementPermissionsLevel\n | OAuthClientPermissionsLevel\n | PortalClientPermissionsLevel\n\nconst permissionLevelToAccessType: Record<PermissionLevel, ACCESS_TYPE[]> = {\n // Entity\n CAN_VIEW: [ACCESS_TYPE.READ],\n CAN_DOWNLOAD: [ACCESS_TYPE.READ, ACCESS_TYPE.DOWNLOAD],\n CAN_EDIT: [\n ACCESS_TYPE.CREATE,\n ACCESS_TYPE.READ,\n ACCESS_TYPE.DOWNLOAD,\n ACCESS_TYPE.UPDATE,\n ],\n CAN_EDIT_DELETE: [\n ACCESS_TYPE.CREATE,\n ACCESS_TYPE.READ,\n ACCESS_TYPE.DOWNLOAD,\n ACCESS_TYPE.UPDATE,\n ACCESS_TYPE.DELETE,\n ],\n CAN_ADMINISTER: [\n ACCESS_TYPE.READ,\n ACCESS_TYPE.DOWNLOAD,\n ACCESS_TYPE.UPDATE,\n ACCESS_TYPE.DELETE,\n ACCESS_TYPE.CREATE,\n ACCESS_TYPE.CHANGE_PERMISSIONS,\n ACCESS_TYPE.CHANGE_SETTINGS,\n ACCESS_TYPE.MODERATE,\n ],\n\n // Access Requirements\n CAN_REVIEW_SUBMISSIONS: [ACCESS_TYPE.REVIEW_SUBMISSIONS],\n IS_EXEMPTION_ELIGIBLE: [ACCESS_TYPE.EXEMPTION_ELIGIBLE],\n CAN_REVIEW_SUBMISSIONS_AND_IS_EXEMPTION_ELIGIBLE: [\n ACCESS_TYPE.EXEMPTION_ELIGIBLE,\n ACCESS_TYPE.REVIEW_SUBMISSIONS,\n ],\n CAN_ADMINISTER_OAUTH_CLIENT: [\n ACCESS_TYPE.READ,\n ACCESS_TYPE.CHANGE_PERMISSIONS,\n ACCESS_TYPE.DELETE,\n ACCESS_TYPE.UPDATE,\n ],\n CAN_ADMINISTER_PORTAL: [\n ACCESS_TYPE.CHANGE_PERMISSIONS,\n ACCESS_TYPE.CREATE,\n ACCESS_TYPE.UPDATE,\n ACCESS_TYPE.READ,\n ACCESS_TYPE.DELETE,\n ],\n}\n\nconst prepAccessTypeForComparison = (accessType: ACCESS_TYPE[]) => {\n return JSON.stringify(accessType.sort())\n}\n\nexport const getPermissionLevelFromAccessType = (accessType: ACCESS_TYPE[]) => {\n const lookupValue = prepAccessTypeForComparison(accessType)\n const permissionLevel = Object.keys(permissionLevelToAccessType).find(key => {\n return (\n lookupValue ===\n prepAccessTypeForComparison(\n permissionLevelToAccessType[key as PermissionLevel],\n )\n )\n })\n\n return permissionLevel as PermissionLevel\n}\n\nexport const getAccessTypeFromPermissionLevel = (\n permissionLevel: PermissionLevel,\n) => {\n return permissionLevelToAccessType[permissionLevel]\n}\n\nexport const permissionLevelToLabel: Record<PermissionLevel, string> = {\n // Entity\n CAN_VIEW: 'Can view',\n CAN_DOWNLOAD: 'Can download',\n CAN_EDIT: 'Can edit',\n CAN_EDIT_DELETE: 'Can edit & delete',\n CAN_ADMINISTER: 'Administrator',\n\n // Access requirement\n CAN_REVIEW_SUBMISSIONS: 'Can Review',\n IS_EXEMPTION_ELIGIBLE: 'Exempt Eligible',\n CAN_REVIEW_SUBMISSIONS_AND_IS_EXEMPTION_ELIGIBLE:\n 'Can Review & Exempt Eligible',\n\n // OAuth Client\n CAN_ADMINISTER_OAUTH_CLIENT: 'Administrator',\n\n // Portal\n CAN_ADMINISTER_PORTAL: 'Administrator',\n}\n"],"mappings":";;;;;;;IAoCM,IAAsE;CAE1E,UAAU,CAAC,EAAY,IAAI;CAC3B,cAAc,CAAC,EAAY,MAAM,EAAY,QAAQ;CACrD,UAAU;EACR,EAAY;EACZ,EAAY;EACZ,EAAY;EACZ,EAAY;CACd;CACA,iBAAiB;EACf,EAAY;EACZ,EAAY;EACZ,EAAY;EACZ,EAAY;EACZ,EAAY;CACd;CACA,gBAAgB;EACd,EAAY;EACZ,EAAY;EACZ,EAAY;EACZ,EAAY;EACZ,EAAY;EACZ,EAAY;EACZ,EAAY;EACZ,EAAY;CACd;CAGA,wBAAwB,CAAC,EAAY,kBAAkB;CACvD,uBAAuB,CAAC,EAAY,kBAAkB;CACtD,kDAAkD,CAChD,EAAY,oBACZ,EAAY,kBACd;CACA,6BAA6B;EAC3B,EAAY;EACZ,EAAY;EACZ,EAAY;EACZ,EAAY;CACd;CACA,uBAAuB;EACrB,EAAY;EACZ,EAAY;EACZ,EAAY;EACZ,EAAY;EACZ,EAAY;CACd;AACF,GAEM,KAA+B,MAC5B,KAAK,UAAU,EAAW,KAAK,CAAC,GAG5B,KAAoC,MAA8B;CAC7E,IAAM,IAAc,EAA4B,CAAU;CAU1D,OATwB,OAAO,KAAK,CAA2B,EAAE,MAAK,MAElE,MACA,EACE,EAA4B,EAC9B,CAIG;AACT,GAEa,KACX,MAEO,EAA4B,IAGxB,IAA0D;CAErE,UAAU;CACV,cAAc;CACd,UAAU;CACV,iBAAiB;CACjB,gBAAgB;CAGhB,wBAAwB;CACxB,uBAAuB;CACvB,kDACE;CAGF,6BAA6B;CAG7B,uBAAuB;AACzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"SynapseConstants.js","names":[],"sources":["../../src/utils/SynapseConstants.ts"],"sourcesContent":["import { ORIENTATION_BANNER_KEYS } from './OrientationBannerConstants'\n\n/** The Synapse Access and Compliance team */\nexport const ACT_TEAM_ID = 464532\n/** The team containing Synapse users whose HTML files may be rendered without sanitization */\nexport const TRUSTED_HTML_USERS_TEAM_ID = '3351236'\n\n/** The default Synapse realm ID */\nexport const SYNAPSE_REALM = '0'\n\n/** QueryBundleRequest constants */\nexport const BUNDLE_MASK_QUERY_RESULTS: number = 1\nexport const BUNDLE_MASK_QUERY_COUNT: number = 2\nexport const BUNDLE_MASK_QUERY_SELECT_COLUMNS: number = 4\nexport const BUNDLE_MASK_QUERY_MAX_ROWS_PER_PAGE: number = 8\nexport const BUNDLE_MASK_QUERY_COLUMN_MODELS: number = 16\nexport const BUNDLE_MASK_QUERY_FACETS: number = 32\nexport const BUNDLE_MASK_SUM_FILES_SIZE_BYTES: number = 64\nexport const BUNDLE_MASK_LAST_UPDATED_ON = 0x80\nexport const BUNDLE_MASK_COMBINED_SQL = 0x100\nexport const BUNDLE_MASK_ACTIONS_REQUIRED = 0x200\n\nexport const ALL_QUERY_BUNDLE_PARTS =\n BUNDLE_MASK_QUERY_RESULTS |\n BUNDLE_MASK_QUERY_COUNT |\n BUNDLE_MASK_QUERY_SELECT_COLUMNS |\n BUNDLE_MASK_QUERY_MAX_ROWS_PER_PAGE |\n BUNDLE_MASK_QUERY_COLUMN_MODELS |\n BUNDLE_MASK_QUERY_FACETS |\n BUNDLE_MASK_SUM_FILES_SIZE_BYTES |\n BUNDLE_MASK_LAST_UPDATED_ON |\n BUNDLE_MASK_COMBINED_SQL |\n BUNDLE_MASK_ACTIONS_REQUIRED\n\n/** Row Types */\nexport const STUDY: string = 'study'\n/** Unannotated value for query */\nexport const VALUE_NOT_SET = 'org.sagebionetworks.UNDEFINED_NULL_NOTSET'\nexport const FRIENDLY_VALUE_NOT_SET = 'Not Assigned'\n// for study icons\nexport const STUDY_ACTIVE: string = 'study active'\nexport const STUDY_COMPLETE: string = 'study complete'\nexport const DATABASE: string = 'database'\nexport const PROGRAM: string = 'program'\nexport const DATASET = 'dataset'\nexport const AMP_CONSORTIUM: string = 'AMP_Consortium'\nexport const FUNDER = 'funder'\nexport const PUBLICATION: string = 'publication'\nexport const STANDARD_DATA_MODEL: string = 'standard'\nexport const TOOL: string = 'tool'\nexport const EXTERNAL_RESOURCE: string = 'external resource'\nexport const GENERIC_CARD = 'GENERIC_CARD'\nexport const OBSERVATION_CARD = 'observation_card'\nexport const RELEASE_CARD = 'release_card'\nexport const COMPUTATIONAL: string = 'computational'\nexport const COMPUTATIONAL_TOOL: string = 'computational tool'\nexport const EXPERIMENTAL: string = 'experimental'\nexport const EXPERIMENTAL_TOOL: string = 'experimental tool'\nexport const CLINICAL: string = 'clinical'\nexport const PROJECT: string = 'Project'\nexport const GRANT: string = 'Grant'\nexport const ORGANIZATION: string = 'ORGANIZATION'\nexport const CONTRIBUTOR: string = 'contributor'\nexport const PERSON: string = 'PERSON'\nexport const TREE_HORIZONTAL: string = 'tree_horizontal'\nexport const MOUSE: string = 'MOUSE'\nexport const TRANSLATIONAL: string = 'TRANSLATIONAL'\nexport const EXPLORE: string = 'explore'\nexport const SEARCH: string = 'search'\nexport const CHART: string = 'chart'\nexport const FILTER: string = 'filter'\nexport const SQL_EDITOR: string = 'sqleditor'\nexport const DOWNLOAD: string = 'download'\nexport const EXPAND: string = 'expand'\nexport const COLLAPSE: string = 'collapse'\nexport const CLOSE: string = 'close'\nexport const SORTUP: string = 'sortup'\nexport const SORTDOWN: string = 'sortdown'\nexport const SETTINGS: string = 'settings'\nexport const COLUMNS: string = 'columns'\nexport const COLUMNSDARK: string = 'columnsdark'\nexport const VERTICAL_DOTS: string = 'verticaldots'\nexport const CHALLENGE: string = 'challenge'\nexport const FILE: string = 'file'\nexport const CHART2: string = 'chart2'\nexport const EXTERNALLINK: string = 'externallink'\nexport const EASY_DIFFICULTY: string = 'easy-difficulty'\nexport const MEDIUM_DIFFICULTY: string = 'medium-difficulty'\nexport const VARIABLE_DIFFICULTY: string = 'variable-difficulty'\nexport const DOWNLOAD_PERMISSION_REQUIRED: string =\n 'download-permission-required'\n\nexport const DEFAULT_PAGE_SIZE: number = 25\n// For User Profile Cards\nexport const AVATAR = 'AVATAR'\n\n/** @deprecated use the UserBadge component */\nexport const SMALL_USER_CARD = 'SMALL USER CARD'\nexport const MEDIUM_USER_CARD = 'MEDIUM USER CARD'\nexport const LARGE_USER_CARD = 'LARGE USER CARD'\n\nexport type UserCardSize =\n | typeof AVATAR\n | typeof SMALL_USER_CARD\n | typeof MEDIUM_USER_CARD\n | typeof LARGE_USER_CARD\n\nexport const SEPERATOR = 'SEPERATOR'\n\n// For internal testing only\nexport const _TIME_DELAY = 75\nexport const SRC_SIGN_IN_CLASS = 'SRC-SIGN-IN-CLASS'\nexport const EXPERIMENTAL_MODE_COOKIE = 'SynapseTestWebsite'\n\n// UserBundle constants\nexport const USER_BUNDLE_MASK_USER_PROFILE = 0x1\nexport const USER_BUNDLE_MASK_ORCID = 0x2\nexport const USER_BUNDLE_MASK_VERIFICATION_SUBMISSION = 0x4\nexport const USER_BUNDLE_MASK_IS_CERTIFIED = 0x8\nexport const USER_BUNDLE_MASK_IS_VERIFIED = 0x10\nexport const USER_BUNDLE_MASK_IS_ACT_MEMBER = 0x20\nexport const USER_BUNDLE_MASK_IS_AR_REVIEWER = 0x40\n// SessionStorage keys for info from ids\nexport const USER_PROFILE_STORAGE_KEY = 'INFO_FROM_IDS_USER_PROFILE'\nexport const ENTITY_HEADER_STORAGE_KEY = 'INFO_FROM_IDS_ENTITY_HEADER'\nexport const EVALUATIONS_STORAGE_KEY = 'INFO_FROM_IDS_EVALUATION_QUEUE'\n\nexport const DATETIME_UTC_COOKIE_KEY =\n 'org.sagebionetworks.synapse.datetime.utc'\n\nexport const BASE = 1024,\n KB = BASE,\n MB = KB * BASE,\n GB = MB * BASE,\n TB = GB * BASE\n\nexport const DAY_IN_MS = 1000 * 60 * 60 * 24\n\n/* The ID of the table in production that contains the canned responses for the data access submission rejection form. */\nexport const REJECT_SUBMISSION_CANNED_RESPONSES_TABLE = 'syn50683097'\n/* The ID of the table in production that contains the canned responses for the profile validation rejection form. */\nexport const REJECT_VALIDATION_CANNED_RESPONSES_TABLE = 'syn63119445'\nexport const AUTHENTICATION_RECEIPT_LOCALSTORAGE_KEY =\n 'last_user_authentication_receipt'\n\n/** URL constants */\nexport const URL_TERMS_CONDITIONS_AGREEMENT =\n 'https://www.synapse.org/TrustCenter:TermsOfService'\n\n/** Class names */\nexport const LOGIN_BACK_BUTTON_CLASS_NAME = 'login-flow-back-button'\n\n/* Login methods */\nexport const LOGIN_METHOD_EMAIL = 'EMAIL'\nexport const LOGIN_METHOD_OAUTH2_GOOGLE = 'GOOGLE'\nexport const LOGIN_METHOD_OAUTH2_ARCUS = 'ARCUS'\nexport const LOGIN_METHOD_OAUTH2_ORCID = 'ORCID'\nexport const LOGIN_METHOD_OAUTH2_SAGE_BIONETWORKS = 'SAGE_BIONETWORKS'\n\nexport const OAUTH2_PROVIDERS = {\n [LOGIN_METHOD_OAUTH2_ARCUS]: 'ARCUS_BIOSCIENCES',\n [LOGIN_METHOD_OAUTH2_GOOGLE]: 'GOOGLE_OAUTH_2_0',\n [LOGIN_METHOD_OAUTH2_ORCID]: 'ORCID',\n [LOGIN_METHOD_OAUTH2_SAGE_BIONETWORKS]: 'SAGE_BIONETWORKS',\n}\n\nexport const EXTERNAL_COMPUTE_ENV_DISCLAIMER =\n 'external_compute_env_disclaimer_acknowledged'\n\n/* Last login information */\nexport const CURRENT_SOURCEAPP_NAME_LOCALSTORAGE_KEY =\n 'current_sourceapp_friendly_name'\nexport const LAST_LOGIN_METHOD_LOCALSTORAGE_KEY = 'last_login_method'\nexport const LAST_LOGIN_SOURCEAPP_NAME_LOCALSTORAGE_KEY =\n 'last_login_sourceapp_friendly_name'\nexport const LAST_LOGIN_SOURCEAPP_URL_LOCALSTORAGE_KEY =\n 'last_login_sourceapp_url'\nexport const LAST_LOGIN_DATE_LOCALSTORAGE_KEY = 'last_login_date'\n\nexport const ACCESS_TOKEN_COOKIE_KEY =\n 'org.sagebionetworks.security.user.login.token'\nexport const LAST_PLACE_LOCALSTORAGE_KEY = 'last_place_url'\n\nexport const ACCOUNT_SITE_PROMPTED_FOR_LOGIN_COOKIE_KEY =\n 'org.sagebionetworks.account.promptedforlogin'\n\n/* Persistent localStorage keys on SWC logout */\nexport const PERSISTENT_LOCAL_STORAGE_KEYS = [\n ...ORIENTATION_BANNER_KEYS,\n EXTERNAL_COMPUTE_ENV_DISCLAIMER,\n]\n\nexport const DATA_CATALOG_PATH_SEGMENT = 'DataCatalog:0'\n\nexport const PRIVACY_POLICY_LINK =\n 'https://www.synapse.org/TrustCenter:PrivacyPolicy'\nexport const CHILD_MINOR_ADDENDUM_LINK =\n 'https://www.synapse.org/TrustCenter:ChildMinorAddendum'\n\nexport const SYNAPSE_BACKEND_PRODUCTION_URL =\n 'https://repo-prod.prod.sagebase.org'\nexport const SYNAPSE_BACKEND_STAGING_URL =\n 'https://repo-staging.prod.sagebase.org'\nexport const SYNAPSE_BACKEND_DEV_URL = 'https://repo-dev.dev.sagebase.org'\n\nexport const ONE_SAGE_PRODUCTION_URL = 'https://accounts.synapse.org'\nexport const ONE_SAGE_STAGING_URL = 'https://staging.accounts.synapse.org'\nexport const ONE_SAGE_DEV_URL = 'https://dev.accounts.synapse.org'\nexport const ONE_SAGE_APPID_QUERY_PARAM_KEY = 'appId'\n\nexport const SAGE_OFFERINGS_HELP_URL =\n 'https://help.synapse.org/docs/Sage-Offerings.2965078125.html'\n\nexport const SYNAPSE_DOCS_SHARING_SETTINGS_PERMISSIONS_CONDITIONS_FOR_USE_URL =\n 'https://docs.synapse.org/synapse-docs/sharing-settings-permissions-and-conditions-for-use'\n\n// Grid Page URL Query Parameters\nexport const GRID_PAGE_SESSION_ID_QUERY_PARAM = 'sessionId'\nexport const GRID_PAGE_AGENT_REGISTRATION_ID_QUERY_PARAM = 'agentRegistrationId'\nexport const GRID_PAGE_TASK_ID_QUERY_PARAM = 'taskId'\n\n// Search Page URL Query Parameters\nexport const SEARCH_PAGE_QUERY_PARAM = 'query'\n\n// Version label used by the backend for version that has not been snapshotted\nexport const TABLE_VERSION_IN_PROGRESS = 'in progress'\n\nexport const CSRF_TOKEN_STORAGE_KEY = 'oauth2_csrf_token'\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGa,KAAc,QAEd,KAA6B,WAG7B,KAAgB,KAGhB,KAAoC,GACpC,KAAkC,GAClC,KAA2C,GAC3C,KAA8C,GAC9C,KAA0C,IAC1C,KAAmC,IACnC,KAA2C,IAC3C,KAA8B,KAC9B,KAA2B,KAC3B,KAA+B,KAE/B,IACX,MAYW,IAAgB,SAEhB,IAAgB,6CAChB,IAAyB,gBAEzB,IAAuB,gBACvB,IAAyB,kBACzB,IAAmB,YACnB,IAAkB,WAClB,IAAU,WACV,IAAyB,kBACzB,IAAS,UACT,IAAsB,eACtB,IAA8B,YAC9B,IAAe,QACf,IAA4B,qBAC5B,IAAe,gBACf,IAAmB,oBACnB,IAAe,gBACf,IAAwB,iBACxB,IAA6B,sBAC7B,IAAuB,gBACvB,IAA4B,qBAC5B,IAAmB,YACnB,IAAkB,WAClB,IAAgB,SAChB,IAAuB,gBACvB,IAAsB,eACtB,IAAiB,UACjB,IAA0B,mBAC1B,IAAgB,SAChB,IAAwB,iBACxB,IAAkB,WAClB,IAAiB,UACjB,IAAgB,SAChB,IAAiB,UACjB,IAAqB,aACrB,IAAmB,YACnB,IAAiB,UACjB,IAAmB,YACnB,IAAgB,SAChB,IAAiB,UACjB,IAAmB,YACnB,IAAmB,YACnB,KAAkB,WAClB,KAAsB,eACtB,KAAwB,gBACxB,KAAoB,aACpB,KAAe,QACf,KAAiB,UACjB,KAAuB,gBACvB,KAA0B,mBAC1B,KAA4B,qBAC5B,KAA8B,uBAC9B,KACX,gCAEW,KAA4B,IAE5B,KAAS,UAGT,IAAkB,mBAClB,KAAmB,oBACnB,KAAkB,mBAQlB,KAAY,aAGZ,KAAc,IACd,KAAoB,qBACpB,KAA2B,sBAG3B,KAAgC,GAChC,KAAyB,GACzB,KAA2C,GAC3C,KAAgC,GAChC,KAA+B,IAC/B,KAAiC,IACjC,KAAkC,IAElC,KAA2B,8BAC3B,KAA4B,+BAC5B,KAA0B,kCAE1B,KACX,4CAEW,IAAO,MAClB,IAAK,GACL,IAAK,IAAK,GACV,IAAK,IAAK,GACV,KAAK,IAAK,GAEC,KAAY,MAAO,KAAK,KAAK,IAG7B,KAA2C,eAE3C,KAA2C,eAC3C,KACX,oCAGW,KACX,sDAGW,KAA+B,0BAG/B,KAAqB,SACrB,IAA6B,UAC7B,IAA4B,SAC5B,IAA4B,SAC5B,IAAuC,oBAEvC,KAAmB;EAC7B,IAA4B;EAC5B,IAA6B;EAC7B,IAA4B;EAC5B,IAAuC;CACzC,EAEY,IACX,gDAGW,KACX,mCACW,KAAqC,qBACrC,KACX,sCACW,KACX,4BACW,KAAmC,mBAEnC,KACX,iDACW,KAA8B,kBAE9B,KACX,gDAGW,KAAgC,CAC3C,GAAG,IACH,EACD,EAEY,KAA4B,iBAE5B,KACX,qDACW,KACX,0DAEW,KACX,uCACW,KACX,0CACW,KAA0B,qCAE1B,KAA0B,gCAC1B,KAAuB,wCACvB,KAAmB,oCACnB,KAAiC,SAEjC,KACX,gEAEW,KACX,6FAGW,KAAmC,aACnC,KAA8C,uBAC9C,KAAgC,UAGhC,KAA0B,SAG1B,KAA4B,eAE5B,IAAyB"}
1
+ {"version":3,"file":"SynapseConstants.js","names":[],"sources":["../../src/utils/SynapseConstants.ts"],"sourcesContent":["import { ORIENTATION_BANNER_KEYS } from './OrientationBannerConstants'\n\n/** The Synapse Access and Compliance team */\nexport const ACT_TEAM_ID = 464532\n/** The team containing Synapse users whose HTML files may be rendered without sanitization */\nexport const TRUSTED_HTML_USERS_TEAM_ID = '3351236'\n\n/** The default Synapse realm ID */\nexport const SYNAPSE_REALM = '0'\n\n/** QueryBundleRequest constants */\nexport const BUNDLE_MASK_QUERY_RESULTS: number = 1\nexport const BUNDLE_MASK_QUERY_COUNT: number = 2\nexport const BUNDLE_MASK_QUERY_SELECT_COLUMNS: number = 4\nexport const BUNDLE_MASK_QUERY_MAX_ROWS_PER_PAGE: number = 8\nexport const BUNDLE_MASK_QUERY_COLUMN_MODELS: number = 16\nexport const BUNDLE_MASK_QUERY_FACETS: number = 32\nexport const BUNDLE_MASK_SUM_FILES_SIZE_BYTES: number = 64\nexport const BUNDLE_MASK_LAST_UPDATED_ON = 0x80\nexport const BUNDLE_MASK_COMBINED_SQL = 0x100\nexport const BUNDLE_MASK_ACTIONS_REQUIRED = 0x200\n\nexport const ALL_QUERY_BUNDLE_PARTS =\n BUNDLE_MASK_QUERY_RESULTS |\n BUNDLE_MASK_QUERY_COUNT |\n BUNDLE_MASK_QUERY_SELECT_COLUMNS |\n BUNDLE_MASK_QUERY_MAX_ROWS_PER_PAGE |\n BUNDLE_MASK_QUERY_COLUMN_MODELS |\n BUNDLE_MASK_QUERY_FACETS |\n BUNDLE_MASK_SUM_FILES_SIZE_BYTES |\n BUNDLE_MASK_LAST_UPDATED_ON |\n BUNDLE_MASK_COMBINED_SQL |\n BUNDLE_MASK_ACTIONS_REQUIRED\n\n/** Row Types */\nexport const STUDY: string = 'study'\n/** Unannotated value for query */\nexport const VALUE_NOT_SET = 'org.sagebionetworks.UNDEFINED_NULL_NOTSET'\nexport const FRIENDLY_VALUE_NOT_SET = 'Not Assigned'\n// for study icons\nexport const STUDY_ACTIVE: string = 'study active'\nexport const STUDY_COMPLETE: string = 'study complete'\nexport const DATABASE: string = 'database'\nexport const PROGRAM: string = 'program'\nexport const DATASET = 'dataset'\nexport const AMP_CONSORTIUM: string = 'AMP_Consortium'\nexport const FUNDER = 'funder'\nexport const PUBLICATION: string = 'publication'\nexport const STANDARD_DATA_MODEL: string = 'standard'\nexport const TOOL: string = 'tool'\nexport const EXTERNAL_RESOURCE: string = 'external resource'\nexport const GENERIC_CARD = 'GENERIC_CARD'\nexport const OBSERVATION_CARD = 'observation_card'\nexport const RELEASE_CARD = 'release_card'\nexport const COMPUTATIONAL: string = 'computational'\nexport const COMPUTATIONAL_TOOL: string = 'computational tool'\nexport const EXPERIMENTAL: string = 'experimental'\nexport const EXPERIMENTAL_TOOL: string = 'experimental tool'\nexport const CLINICAL: string = 'clinical'\nexport const PROJECT: string = 'Project'\nexport const GRANT: string = 'Grant'\nexport const ORGANIZATION: string = 'ORGANIZATION'\nexport const CONTRIBUTOR: string = 'contributor'\nexport const PERSON: string = 'PERSON'\nexport const TREE_HORIZONTAL: string = 'tree_horizontal'\nexport const MOUSE: string = 'MOUSE'\nexport const TRANSLATIONAL: string = 'TRANSLATIONAL'\nexport const EXPLORE: string = 'explore'\nexport const SEARCH: string = 'search'\nexport const CHART: string = 'chart'\nexport const FILTER: string = 'filter'\nexport const SQL_EDITOR: string = 'sqleditor'\nexport const DOWNLOAD: string = 'download'\nexport const EXPAND: string = 'expand'\nexport const COLLAPSE: string = 'collapse'\nexport const CLOSE: string = 'close'\nexport const SORTUP: string = 'sortup'\nexport const SORTDOWN: string = 'sortdown'\nexport const SETTINGS: string = 'settings'\nexport const COLUMNS: string = 'columns'\nexport const COLUMNSDARK: string = 'columnsdark'\nexport const VERTICAL_DOTS: string = 'verticaldots'\nexport const CHALLENGE: string = 'challenge'\nexport const FILE: string = 'file'\nexport const CHART2: string = 'chart2'\nexport const EXTERNALLINK: string = 'externallink'\nexport const EASY_DIFFICULTY: string = 'easy-difficulty'\nexport const MEDIUM_DIFFICULTY: string = 'medium-difficulty'\nexport const VARIABLE_DIFFICULTY: string = 'variable-difficulty'\nexport const DOWNLOAD_PERMISSION_REQUIRED: string =\n 'download-permission-required'\n\nexport const DEFAULT_PAGE_SIZE: number = 25\n// For User Profile Cards\nexport const AVATAR = 'AVATAR'\n\n/** @deprecated use the UserBadge component */\nexport const SMALL_USER_CARD = 'SMALL USER CARD'\nexport const MEDIUM_USER_CARD = 'MEDIUM USER CARD'\nexport const LARGE_USER_CARD = 'LARGE USER CARD'\n\nexport type UserCardSize =\n | typeof AVATAR\n | typeof SMALL_USER_CARD\n | typeof MEDIUM_USER_CARD\n | typeof LARGE_USER_CARD\n\nexport const SEPERATOR = 'SEPERATOR'\n\n// For internal testing only\nexport const _TIME_DELAY = 75\nexport const SRC_SIGN_IN_CLASS = 'SRC-SIGN-IN-CLASS'\nexport const EXPERIMENTAL_MODE_COOKIE = 'SynapseTestWebsite'\n\n// UserBundle constants\nexport const USER_BUNDLE_MASK_USER_PROFILE = 0x1\nexport const USER_BUNDLE_MASK_ORCID = 0x2\nexport const USER_BUNDLE_MASK_VERIFICATION_SUBMISSION = 0x4\nexport const USER_BUNDLE_MASK_IS_CERTIFIED = 0x8\nexport const USER_BUNDLE_MASK_IS_VERIFIED = 0x10\nexport const USER_BUNDLE_MASK_IS_ACT_MEMBER = 0x20\nexport const USER_BUNDLE_MASK_IS_AR_REVIEWER = 0x40\n// SessionStorage keys for info from ids\nexport const USER_PROFILE_STORAGE_KEY = 'INFO_FROM_IDS_USER_PROFILE'\nexport const ENTITY_HEADER_STORAGE_KEY = 'INFO_FROM_IDS_ENTITY_HEADER'\nexport const EVALUATIONS_STORAGE_KEY = 'INFO_FROM_IDS_EVALUATION_QUEUE'\n\nexport const DATETIME_UTC_COOKIE_KEY =\n 'org.sagebionetworks.synapse.datetime.utc'\n\nexport const BASE = 1024,\n KB = BASE,\n MB = KB * BASE,\n GB = MB * BASE,\n TB = GB * BASE\n\nexport const DAY_IN_MS = 1000 * 60 * 60 * 24\n\n/* The ID of the table in production that contains the canned responses for the data access submission rejection form. */\nexport const REJECT_SUBMISSION_CANNED_RESPONSES_TABLE = 'syn50683097'\n/* The ID of the table in production that contains the canned responses for the profile validation rejection form. */\nexport const REJECT_VALIDATION_CANNED_RESPONSES_TABLE = 'syn63119445'\nexport const AUTHENTICATION_RECEIPT_LOCALSTORAGE_KEY =\n 'last_user_authentication_receipt'\n\n/** URL constants */\nexport const URL_TERMS_CONDITIONS_AGREEMENT =\n 'https://www.synapse.org/TrustCenter:TermsOfService'\n\n/** Class names */\nexport const LOGIN_BACK_BUTTON_CLASS_NAME = 'login-flow-back-button'\n\n/* Login methods */\nexport const LOGIN_METHOD_EMAIL = 'EMAIL'\nexport const LOGIN_METHOD_OAUTH2_GOOGLE = 'GOOGLE'\nexport const LOGIN_METHOD_OAUTH2_ARCUS = 'ARCUS'\nexport const LOGIN_METHOD_OAUTH2_ORCID = 'ORCID'\nexport const LOGIN_METHOD_OAUTH2_SAGE_BIONETWORKS = 'SAGE_BIONETWORKS'\n\nexport const OAUTH2_PROVIDERS = {\n [LOGIN_METHOD_OAUTH2_ARCUS]: 'ARCUS_BIOSCIENCES',\n [LOGIN_METHOD_OAUTH2_GOOGLE]: 'GOOGLE_OAUTH_2_0',\n [LOGIN_METHOD_OAUTH2_ORCID]: 'ORCID',\n [LOGIN_METHOD_OAUTH2_SAGE_BIONETWORKS]: 'SAGE_BIONETWORKS',\n}\n\nexport const EXTERNAL_COMPUTE_ENV_DISCLAIMER =\n 'external_compute_env_disclaimer_acknowledged'\n\n/* Last login information */\nexport const CURRENT_SOURCEAPP_NAME_LOCALSTORAGE_KEY =\n 'current_sourceapp_friendly_name'\nexport const LAST_LOGIN_METHOD_LOCALSTORAGE_KEY = 'last_login_method'\nexport const LAST_LOGIN_SOURCEAPP_NAME_LOCALSTORAGE_KEY =\n 'last_login_sourceapp_friendly_name'\nexport const LAST_LOGIN_SOURCEAPP_URL_LOCALSTORAGE_KEY =\n 'last_login_sourceapp_url'\nexport const LAST_LOGIN_DATE_LOCALSTORAGE_KEY = 'last_login_date'\n\nexport const ACCESS_TOKEN_COOKIE_KEY =\n 'org.sagebionetworks.security.user.login.token'\nexport const LAST_PLACE_LOCALSTORAGE_KEY = 'last_place_url'\n\nexport const ACCOUNT_SITE_PROMPTED_FOR_LOGIN_COOKIE_KEY =\n 'org.sagebionetworks.account.promptedforlogin'\n\n/* Persistent localStorage keys on SWC logout */\nexport const PERSISTENT_LOCAL_STORAGE_KEYS = [\n ...ORIENTATION_BANNER_KEYS,\n EXTERNAL_COMPUTE_ENV_DISCLAIMER,\n]\n\nexport const DATA_CATALOG_PATH_SEGMENT = 'DataCatalog:0'\n\nexport const PRIVACY_POLICY_LINK =\n 'https://www.synapse.org/TrustCenter:PrivacyPolicy'\nexport const CHILD_MINOR_ADDENDUM_LINK =\n 'https://www.synapse.org/TrustCenter:ChildMinorAddendum'\n\nexport const SYNAPSE_BACKEND_PRODUCTION_URL =\n 'https://repo-prod.prod.sagebase.org'\nexport const SYNAPSE_BACKEND_STAGING_URL =\n 'https://repo-staging.prod.sagebase.org'\nexport const SYNAPSE_BACKEND_DEV_URL = 'https://repo-dev.dev.sagebase.org'\n\nexport const ONE_SAGE_PRODUCTION_URL = 'https://accounts.synapse.org'\nexport const ONE_SAGE_STAGING_URL = 'https://staging.accounts.synapse.org'\nexport const ONE_SAGE_DEV_URL = 'https://dev.accounts.synapse.org'\nexport const ONE_SAGE_APPID_QUERY_PARAM_KEY = 'appId'\n\nexport const SAGE_OFFERINGS_HELP_URL =\n 'https://help.synapse.org/docs/Sage-Offerings.2965078125.html'\n\nexport const SYNAPSE_DOCS_SHARING_SETTINGS_PERMISSIONS_CONDITIONS_FOR_USE_URL =\n 'https://docs.synapse.org/synapse-docs/sharing-settings-permissions-and-conditions-for-use'\n\n// Grid Page URL Query Parameters\nexport const GRID_PAGE_SESSION_ID_QUERY_PARAM = 'sessionId'\nexport const GRID_PAGE_AGENT_REGISTRATION_ID_QUERY_PARAM = 'agentRegistrationId'\nexport const GRID_PAGE_TASK_ID_QUERY_PARAM = 'taskId'\n\n// Search Page URL Query Parameters\nexport const SEARCH_PAGE_QUERY_PARAM = 'query'\n\n// Version label used by the backend for version that has not been snapshotted\nexport const TABLE_VERSION_IN_PROGRESS = 'in progress'\n\nexport const CSRF_TOKEN_STORAGE_KEY = 'oauth2_csrf_token'\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGa,KAAc,QAEd,KAA6B,WAG7B,KAAgB,KAGhB,KAAoC,GACpC,KAAkC,GAClC,KAA2C,GAC3C,KAA8C,GAC9C,KAA0C,IAC1C,KAAmC,IACnC,KAA2C,IAC3C,KAA8B,KAC9B,KAA2B,KAC3B,KAA+B,KAE/B,IACX,MAYW,IAAgB,SAEhB,IAAgB,6CAChB,IAAyB,gBAEzB,IAAuB,gBACvB,IAAyB,kBACzB,IAAmB,YACnB,IAAkB,WAClB,IAAU,WACV,IAAyB,kBACzB,IAAS,UACT,IAAsB,eACtB,IAA8B,YAC9B,IAAe,QACf,IAA4B,qBAC5B,IAAe,gBACf,IAAmB,oBACnB,IAAe,gBACf,IAAwB,iBACxB,IAA6B,sBAC7B,IAAuB,gBACvB,IAA4B,qBAC5B,IAAmB,YACnB,IAAkB,WAClB,IAAgB,SAChB,IAAuB,gBACvB,IAAsB,eACtB,IAAiB,UACjB,IAA0B,mBAC1B,IAAgB,SAChB,IAAwB,iBACxB,IAAkB,WAClB,IAAiB,UACjB,IAAgB,SAChB,IAAiB,UACjB,IAAqB,aACrB,IAAmB,YACnB,IAAiB,UACjB,IAAmB,YACnB,IAAgB,SAChB,IAAiB,UACjB,IAAmB,YACnB,IAAmB,YACnB,KAAkB,WAClB,KAAsB,eACtB,KAAwB,gBACxB,KAAoB,aACpB,KAAe,QACf,KAAiB,UACjB,KAAuB,gBACvB,KAA0B,mBAC1B,KAA4B,qBAC5B,KAA8B,uBAC9B,KACX,gCAEW,KAA4B,IAE5B,KAAS,UAGT,IAAkB,mBAClB,KAAmB,oBACnB,KAAkB,mBAQlB,KAAY,aAGZ,KAAc,IACd,KAAoB,qBACpB,KAA2B,sBAG3B,KAAgC,GAChC,KAAyB,GACzB,KAA2C,GAC3C,KAAgC,GAChC,KAA+B,IAC/B,KAAiC,IACjC,KAAkC,IAElC,KAA2B,8BAC3B,KAA4B,+BAC5B,KAA0B,kCAE1B,KACX,4CAEW,IAAO,MAClB,IAAK,GACL,IAAK,IAAK,GACV,IAAK,IAAK,GACV,KAAK,IAAK,GAEC,KAAY,MAAO,KAAK,KAAK,IAG7B,KAA2C,eAE3C,KAA2C,eAC3C,KACX,oCAGW,KACX,sDAGW,KAA+B,0BAG/B,KAAqB,SACrB,IAA6B,UAC7B,IAA4B,SAC5B,IAA4B,SAC5B,IAAuC,oBAEvC,KAAmB;EAC7B,IAA4B;EAC5B,IAA6B;EAC7B,IAA4B;EAC5B,IAAuC;AAC1C,GAEa,IACX,gDAGW,KACX,mCACW,KAAqC,qBACrC,KACX,sCACW,KACX,4BACW,KAAmC,mBAEnC,KACX,iDACW,KAA8B,kBAE9B,KACX,gDAGW,KAAgC,CAC3C,GAAG,IACH,CACF,GAEa,KAA4B,iBAE5B,KACX,qDACW,KACX,0DAEW,KACX,uCACW,KACX,0CACW,KAA0B,qCAE1B,KAA0B,gCAC1B,KAAuB,wCACvB,KAAmB,oCACnB,KAAiC,SAEjC,KACX,gEAEW,KACX,6FAGW,KAAmC,aACnC,KAA8C,uBAC9C,KAAgC,UAGhC,KAA0B,SAG1B,KAA4B,eAE5B,IAAyB"}
@@ -1 +1 @@
1
- {"version":3,"file":"sendAnalyticsEvent.js","names":[],"sources":["../../../src/utils/analytics/sendAnalyticsEvent.ts"],"sourcesContent":["import './AnalyticsTypes'\n\n/**\n * Submits an event to Google Analytics. This is a noop if window.dataLayer is not available, which is possible\n * if the user has not consented to analytics tracking or their browser blocks trackers.\n * @param eventName\n * @param eventData\n */\nexport function sendAnalyticsEvent(\n eventName: string,\n eventData?: Record<string, string | number | boolean>,\n) {\n if (window.dataLayer) {\n window.dataLayer.push({\n ...eventData,\n event: eventName,\n })\n }\n}\n"],"mappings":";AAQA,SAAgB,EACd,GACA,GACA;AACA,CAAI,OAAO,aACT,OAAO,UAAU,KAAK;EACpB,GAAG;EACH,OAAO;EACR,CAAC"}
1
+ {"version":3,"file":"sendAnalyticsEvent.js","names":[],"sources":["../../../src/utils/analytics/sendAnalyticsEvent.ts"],"sourcesContent":["import './AnalyticsTypes'\n\n/**\n * Submits an event to Google Analytics. This is a noop if window.dataLayer is not available, which is possible\n * if the user has not consented to analytics tracking or their browser blocks trackers.\n * @param eventName\n * @param eventData\n */\nexport function sendAnalyticsEvent(\n eventName: string,\n eventData?: Record<string, string | number | boolean>,\n) {\n if (window.dataLayer) {\n window.dataLayer.push({\n ...eventData,\n event: eventName,\n })\n }\n}\n"],"mappings":";AAQA,SAAgB,EACd,GACA,GACA;CACA,AAAI,OAAO,aACT,OAAO,UAAU,KAAK;EACpB,GAAG;EACH,OAAO;CACT,CAAC;AAEL"}
@@ -1 +1 @@
1
- {"version":3,"file":"sendSearchEvent.js","names":[],"sources":["../../../src/utils/analytics/sendSearchEvent.ts"],"sourcesContent":["import {\n SearchQueryResultClickedEventData,\n SearchQuerySubmittedEventData,\n SearchResultPageReturnedEventData,\n SearchResultReturnedEventData,\n} from './SearchEventTypes'\nimport { sendAnalyticsEvent } from './sendAnalyticsEvent'\n\n/**\n * Submits an event to Google Analytics corresponding to a submitted search query.\n *\n * @param eventData - The event data associated with the search query\n */\nexport function sendSearchQuerySubmittedEvent(\n eventData: SearchQuerySubmittedEventData,\n) {\n sendAnalyticsEvent('search_query_submitted', eventData)\n}\n\n/**\n * Submits an event to Google Analytics corresponding to a returned page of search results.\n *\n * @param eventData - The event data associated with the search results\n */\nexport function sendSearchResultsReturnedEvent(\n eventData: SearchResultPageReturnedEventData,\n) {\n sendAnalyticsEvent('search_result_page_returned', eventData)\n}\n\n/**\n * Submits an event to Google Analytics corresponding to an individual returned search result.\n *\n * @param eventData - The event data associated with the search result\n */\nexport function sendSearchResultReturnedEvent(\n eventData: SearchResultReturnedEventData,\n) {\n sendAnalyticsEvent('search_result_returned', eventData)\n}\n\n/**\n * Submits an event to Google Analytics corresponding to a clicked search result.\n *\n * @param eventData - The event data associated with the search result\n */\nexport function sendSearchResultClickedEvent(\n eventData: SearchQueryResultClickedEventData,\n) {\n sendAnalyticsEvent('search_result_clicked', eventData)\n}\n"],"mappings":";;AAaA,SAAgB,EACd,GACA;AACA,GAAmB,0BAA0B,EAAU;;AAQzD,SAAgB,EACd,GACA;AACA,GAAmB,+BAA+B,EAAU;;AAQ9D,SAAgB,EACd,GACA;AACA,GAAmB,0BAA0B,EAAU;;AAQzD,SAAgB,EACd,GACA;AACA,GAAmB,yBAAyB,EAAU"}
1
+ {"version":3,"file":"sendSearchEvent.js","names":[],"sources":["../../../src/utils/analytics/sendSearchEvent.ts"],"sourcesContent":["import {\n SearchQueryResultClickedEventData,\n SearchQuerySubmittedEventData,\n SearchResultPageReturnedEventData,\n SearchResultReturnedEventData,\n} from './SearchEventTypes'\nimport { sendAnalyticsEvent } from './sendAnalyticsEvent'\n\n/**\n * Submits an event to Google Analytics corresponding to a submitted search query.\n *\n * @param eventData - The event data associated with the search query\n */\nexport function sendSearchQuerySubmittedEvent(\n eventData: SearchQuerySubmittedEventData,\n) {\n sendAnalyticsEvent('search_query_submitted', eventData)\n}\n\n/**\n * Submits an event to Google Analytics corresponding to a returned page of search results.\n *\n * @param eventData - The event data associated with the search results\n */\nexport function sendSearchResultsReturnedEvent(\n eventData: SearchResultPageReturnedEventData,\n) {\n sendAnalyticsEvent('search_result_page_returned', eventData)\n}\n\n/**\n * Submits an event to Google Analytics corresponding to an individual returned search result.\n *\n * @param eventData - The event data associated with the search result\n */\nexport function sendSearchResultReturnedEvent(\n eventData: SearchResultReturnedEventData,\n) {\n sendAnalyticsEvent('search_result_returned', eventData)\n}\n\n/**\n * Submits an event to Google Analytics corresponding to a clicked search result.\n *\n * @param eventData - The event data associated with the search result\n */\nexport function sendSearchResultClickedEvent(\n eventData: SearchQueryResultClickedEventData,\n) {\n sendAnalyticsEvent('search_result_clicked', eventData)\n}\n"],"mappings":";;AAaA,SAAgB,EACd,GACA;CACA,EAAmB,0BAA0B,CAAS;AACxD;AAOA,SAAgB,EACd,GACA;CACA,EAAmB,+BAA+B,CAAS;AAC7D;AAOA,SAAgB,EACd,GACA;CACA,EAAmB,0BAA0B,CAAS;AACxD;AAOA,SAAgB,EACd,GACA;CACA,EAAmB,yBAAyB,CAAS;AACvD"}
@@ -1 +1 @@
1
- {"version":3,"file":"useGoogleAnalytics.js","names":[],"sources":["../../../src/utils/analytics/useGoogleAnalytics.ts"],"sourcesContent":["import './AnalyticsTypes'\nimport { useEffect } from 'react'\nimport {\n CookiePreference,\n useCookiePreferences,\n} from '../hooks/useCookiePreferences'\n\n// This hook code is globally executed once\nlet isExecuted = false\n\nexport const useGoogleAnalytics = (measurementId: string = 'GTM-KPW4KS62') => {\n const [cookiePreferences] = useCookiePreferences()\n\n useEffect(() => {\n if (\n shouldEnableGoogleAnalytics(\n window.location.hostname,\n cookiePreferences,\n ) &&\n !isExecuted\n ) {\n window.dataLayer = window.dataLayer || []\n\n window.dataLayer.push({\n 'gtm.start': new Date().getTime(),\n event: 'gtm.js',\n })\n const firstScriptElement = document.getElementsByTagName('script')[0]\n const gtmScript = document.createElement('script')\n const dl = `&l=dataLayer`\n gtmScript.async = true\n gtmScript.src =\n 'https://www.googletagmanager.com/gtm.js?id=' + measurementId + dl\n firstScriptElement.parentNode?.insertBefore(gtmScript, firstScriptElement)\n\n isExecuted = true\n }\n }, [cookiePreferences, measurementId])\n\n return isExecuted\n}\n\nexport function shouldEnableGoogleAnalytics(\n hostname: string,\n cookiePreferences: CookiePreference,\n) {\n const isAnalyticsAllowed = cookiePreferences.analyticsAllowed\n\n const isOnSynapseDomain = hostname.endsWith('.synapse.org')\n const isOnTestDomain =\n hostname.includes('localhost.') ||\n hostname.includes('staging.') ||\n hostname.includes('dev.')\n\n return isAnalyticsAllowed && isOnSynapseDomain && !isOnTestDomain\n}\n\nexport default useGoogleAnalytics\n"],"mappings":";;;AAQA,IAAI,IAAa,IAEJ,KAAsB,IAAwB,mBAAmB;CAC5E,IAAM,CAAC,KAAqB,GAAsB;AA4BlD,QA1BA,QAAgB;AACd,MACE,EACE,OAAO,SAAS,UAChB,EACD,IACD,CAAC,GACD;AAGA,GAFA,OAAO,YAAY,OAAO,aAAa,EAAE,EAEzC,OAAO,UAAU,KAAK;IACpB,8BAAa,IAAI,MAAM,EAAC,SAAS;IACjC,OAAO;IACR,CAAC;GACF,IAAM,IAAqB,SAAS,qBAAqB,SAAS,CAAC,IAC7D,IAAY,SAAS,cAAc,SAAS;AAOlD,GALA,EAAU,QAAQ,IAClB,EAAU,MACR,gDAAgD,IAAgB,gBAClE,EAAmB,YAAY,aAAa,GAAW,EAAmB,EAE1E,IAAa;;IAEd,CAAC,GAAmB,EAAc,CAAC,EAE/B;;AAGT,SAAgB,EACd,GACA,GACA;CACA,IAAM,IAAqB,EAAkB,kBAEvC,IAAoB,EAAS,SAAS,eAAe,EACrD,IACJ,EAAS,SAAS,aAAa,IAC/B,EAAS,SAAS,WAAW,IAC7B,EAAS,SAAS,OAAO;AAE3B,QAAO,KAAsB,KAAqB,CAAC"}
1
+ {"version":3,"file":"useGoogleAnalytics.js","names":[],"sources":["../../../src/utils/analytics/useGoogleAnalytics.ts"],"sourcesContent":["import './AnalyticsTypes'\nimport { useEffect } from 'react'\nimport {\n CookiePreference,\n useCookiePreferences,\n} from '../hooks/useCookiePreferences'\n\n// This hook code is globally executed once\nlet isExecuted = false\n\nexport const useGoogleAnalytics = (measurementId: string = 'GTM-KPW4KS62') => {\n const [cookiePreferences] = useCookiePreferences()\n\n useEffect(() => {\n if (\n shouldEnableGoogleAnalytics(\n window.location.hostname,\n cookiePreferences,\n ) &&\n !isExecuted\n ) {\n window.dataLayer = window.dataLayer || []\n\n window.dataLayer.push({\n 'gtm.start': new Date().getTime(),\n event: 'gtm.js',\n })\n const firstScriptElement = document.getElementsByTagName('script')[0]\n const gtmScript = document.createElement('script')\n const dl = `&l=dataLayer`\n gtmScript.async = true\n gtmScript.src =\n 'https://www.googletagmanager.com/gtm.js?id=' + measurementId + dl\n firstScriptElement.parentNode?.insertBefore(gtmScript, firstScriptElement)\n\n isExecuted = true\n }\n }, [cookiePreferences, measurementId])\n\n return isExecuted\n}\n\nexport function shouldEnableGoogleAnalytics(\n hostname: string,\n cookiePreferences: CookiePreference,\n) {\n const isAnalyticsAllowed = cookiePreferences.analyticsAllowed\n\n const isOnSynapseDomain = hostname.endsWith('.synapse.org')\n const isOnTestDomain =\n hostname.includes('localhost.') ||\n hostname.includes('staging.') ||\n hostname.includes('dev.')\n\n return isAnalyticsAllowed && isOnSynapseDomain && !isOnTestDomain\n}\n\nexport default useGoogleAnalytics\n"],"mappings":";;;AAQA,IAAI,IAAa,IAEJ,KAAsB,IAAwB,mBAAmB;CAC5E,IAAM,CAAC,KAAqB,EAAqB;CA4BjD,OA1BA,QAAgB;EACd,IACE,EACE,OAAO,SAAS,UAChB,CACF,KACA,CAAC,GACD;GAGA,AAFA,OAAO,YAAY,OAAO,aAAa,CAAC,GAExC,OAAO,UAAU,KAAK;IACpB,8BAAa,IAAI,KAAK,GAAE,QAAQ;IAChC,OAAO;GACT,CAAC;GACD,IAAM,IAAqB,SAAS,qBAAqB,QAAQ,EAAE,IAC7D,IAAY,SAAS,cAAc,QAAQ;GAOjD,AALA,EAAU,QAAQ,IAClB,EAAU,MACR,gDAAgD,IAAgB,gBAClE,EAAmB,YAAY,aAAa,GAAW,CAAkB,GAEzE,IAAa;EACf;CACF,GAAG,CAAC,GAAmB,CAAa,CAAC,GAE9B;AACT;AAEA,SAAgB,EACd,GACA,GACA;CACA,IAAM,IAAqB,EAAkB,kBAEvC,IAAoB,EAAS,SAAS,cAAc,GACpD,IACJ,EAAS,SAAS,YAAY,KAC9B,EAAS,SAAS,UAAU,KAC5B,EAAS,SAAS,MAAM;CAE1B,OAAO,KAAsB,KAAqB,CAAC;AACrD"}
@@ -1 +1 @@
1
- {"version":3,"file":"appendFinalQueryParamKey.js","names":[],"sources":["../../src/utils/appendFinalQueryParamKey.ts"],"sourcesContent":["/**\n * Appends a query param key to the passed URL and returns a URL string.\n *\n * This is useful for Synapse APIs where a URL is passed as a query parameter and a token is appended to the end of the URL,\n * such as initiating a reset password request or reset 2FA request.\n * @param url\n * @param queryParam\n */\nexport default function appendFinalQueryParamKey(\n url: URL,\n queryParam: string,\n): string {\n // TODO: URLSearchParams.size returns undefined in our test environment\n if (Array.from(url.searchParams).length === 0) {\n // No params, so use `?`\n return `${url.toString()}?${queryParam}=`\n } else {\n // Already has params, so use '&'\n return `${url.toString()}&${queryParam}=`\n }\n}\n"],"mappings":";AAQA,SAAwB,EACtB,GACA,GACQ;AAON,QALE,MAAM,KAAK,EAAI,aAAa,CAAC,WAAW,IAEnC,GAAG,EAAI,UAAU,CAAC,GAAG,EAAW,KAGhC,GAAG,EAAI,UAAU,CAAC,GAAG,EAAW"}
1
+ {"version":3,"file":"appendFinalQueryParamKey.js","names":[],"sources":["../../src/utils/appendFinalQueryParamKey.ts"],"sourcesContent":["/**\n * Appends a query param key to the passed URL and returns a URL string.\n *\n * This is useful for Synapse APIs where a URL is passed as a query parameter and a token is appended to the end of the URL,\n * such as initiating a reset password request or reset 2FA request.\n * @param url\n * @param queryParam\n */\nexport default function appendFinalQueryParamKey(\n url: URL,\n queryParam: string,\n): string {\n // TODO: URLSearchParams.size returns undefined in our test environment\n if (Array.from(url.searchParams).length === 0) {\n // No params, so use `?`\n return `${url.toString()}?${queryParam}=`\n } else {\n // Already has params, so use '&'\n return `${url.toString()}&${queryParam}=`\n }\n}\n"],"mappings":";AAQA,SAAwB,EACtB,GACA,GACQ;CAON,OALE,MAAM,KAAK,EAAI,YAAY,EAAE,WAAW,IAEnC,GAAG,EAAI,SAAS,EAAE,GAAG,EAAW,KAGhC,GAAG,EAAI,SAAS,EAAE,GAAG,EAAW;AAE3C"}
@@ -1 +1 @@
1
- {"version":3,"file":"EvaluationUtils.js","names":[],"sources":["../../../../src/utils/challenge/evaluation/EvaluationUtils.ts"],"sourcesContent":["import { EvaluationRound } from '@sage-bionetworks/synapse-client'\nimport dayjs from 'dayjs'\n\n/**\n * Given a list of evaluation rounds:\n * - If there is a current round, return it\n * - Else if there is one or more upcoming rounds, return the soonest\n * - Else return the most recent round in the past\n * @param rounds\n */\nexport function getCurrentOrNextOrLatestRound(\n rounds: EvaluationRound[],\n): EvaluationRound | undefined {\n // See if there is a current round. If so, return it!\n const currentRound = rounds.find(\n round =>\n dayjs().isAfter(dayjs(round.roundStart)) &&\n dayjs().isBefore(dayjs(round.roundEnd)),\n )\n if (currentRound) {\n return currentRound\n }\n\n // If there are rounds in the future, return the soonest one.\n const nextRound = rounds.reduce((prev: EvaluationRound | undefined, curr) => {\n const isFutureRound = dayjs().isBefore(curr.roundStart)\n if (!isFutureRound) return prev\n if (prev == undefined) {\n return curr\n } else if (dayjs(curr.roundStart).isBefore(prev.roundStart)) return curr\n return prev\n }, undefined)\n\n if (nextRound) {\n return nextRound\n }\n\n // There are no current or future rounds, so return the most recent round in the past\n const latestRound = rounds.reduce((prev, curr) => {\n const isLater = dayjs(curr.roundEnd).isAfter(dayjs(prev.roundEnd))\n if (isLater) {\n return curr\n }\n return prev\n }, rounds[0])\n return latestRound\n}\n"],"mappings":";;AAUA,SAAgB,EACd,GAC6B;AAiC7B,QA/BqB,EAAO,MAC1B,MACE,GAAO,CAAC,QAAQ,EAAM,EAAM,WAAW,CAAC,IACxC,GAAO,CAAC,SAAS,EAAM,EAAM,SAAS,CAAC,CAEvC,IAKc,EAAO,QAAQ,GAAmC,MAC5C,GAAO,CAAC,SAAS,EAAK,WACvC,KACD,KAAQ,QAED,EAAM,EAAK,WAAW,CAAC,SAAS,EAAK,WAAW,IADlD,IAEF,GACN,KAAA,EAEC,IAKgB,EAAO,QAAQ,GAAM,MACvB,EAAM,EAAK,SAAS,CAAC,QAAQ,EAAM,EAAK,SAAS,CAC7D,GACK,IAEF,GACN,EAAO,GACH"}
1
+ {"version":3,"file":"EvaluationUtils.js","names":[],"sources":["../../../../src/utils/challenge/evaluation/EvaluationUtils.ts"],"sourcesContent":["import { EvaluationRound } from '@sage-bionetworks/synapse-client'\nimport dayjs from 'dayjs'\n\n/**\n * Given a list of evaluation rounds:\n * - If there is a current round, return it\n * - Else if there is one or more upcoming rounds, return the soonest\n * - Else return the most recent round in the past\n * @param rounds\n */\nexport function getCurrentOrNextOrLatestRound(\n rounds: EvaluationRound[],\n): EvaluationRound | undefined {\n // See if there is a current round. If so, return it!\n const currentRound = rounds.find(\n round =>\n dayjs().isAfter(dayjs(round.roundStart)) &&\n dayjs().isBefore(dayjs(round.roundEnd)),\n )\n if (currentRound) {\n return currentRound\n }\n\n // If there are rounds in the future, return the soonest one.\n const nextRound = rounds.reduce((prev: EvaluationRound | undefined, curr) => {\n const isFutureRound = dayjs().isBefore(curr.roundStart)\n if (!isFutureRound) return prev\n if (prev == undefined) {\n return curr\n } else if (dayjs(curr.roundStart).isBefore(prev.roundStart)) return curr\n return prev\n }, undefined)\n\n if (nextRound) {\n return nextRound\n }\n\n // There are no current or future rounds, so return the most recent round in the past\n const latestRound = rounds.reduce((prev, curr) => {\n const isLater = dayjs(curr.roundEnd).isAfter(dayjs(prev.roundEnd))\n if (isLater) {\n return curr\n }\n return prev\n }, rounds[0])\n return latestRound\n}\n"],"mappings":";;AAUA,SAAgB,EACd,GAC6B;CAiC7B,OA/BqB,EAAO,MAC1B,MACE,EAAM,EAAE,QAAQ,EAAM,EAAM,UAAU,CAAC,KACvC,EAAM,EAAE,SAAS,EAAM,EAAM,QAAQ,CAAC,CAEtC,KAKc,EAAO,QAAQ,GAAmC,MAC5C,EAAM,EAAE,SAAS,EAAK,UACvC,MACD,KAAQ,QAED,EAAM,EAAK,UAAU,EAAE,SAAS,EAAK,UAAU,KADjD,IAEF,GACN,KAAA,CAEC,KAKgB,EAAO,QAAQ,GAAM,MACvB,EAAM,EAAK,QAAQ,EAAE,QAAQ,EAAM,EAAK,QAAQ,CAC5D,IACK,IAEF,GACN,EAAO,EACH;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"AridhiaContext.js","names":[],"sources":["../../../src/utils/context/AridhiaContext.tsx"],"sourcesContent":["import { createContext, PropsWithChildren, useContext } from 'react'\nimport { AuthenticationRequest } from '@sage-bionetworks/aridhia-client/generated/models'\n\nexport type AridhiaContextType = {\n /**\n * Base URL for the Aridhia Gateway API.\n * All API calls, including FAIR API calls, should go through the gateway.\n * For FAIR API calls, the gateway routes to /fair/<api path>\n */\n apiBasePath: string\n /**\n * Authentication request parameters for token exchange (excluding subject_token)\n */\n authenticationRequest: Omit<AuthenticationRequest, 'subject_token'>\n}\n\nconst AridhiaContext = createContext<AridhiaContextType | undefined>(undefined)\n\nexport type AridhiaContextProviderProps = PropsWithChildren<{\n /**\n * Base URL for the Aridhia Gateway API.\n * All API calls should go through this gateway.\n * @default 'https://gateway.westeurope.dap.c-path.org'\n */\n apiBasePath?: string\n /**\n * Authentication request parameters for token exchange\n */\n authenticationRequest: Omit<AuthenticationRequest, 'subject_token'>\n}>\n\n/**\n * Context provider that stores Aridhia API configuration.\n * Token exchange is handled by individual hooks/queries to ensure fresh tokens.\n */\nexport function AridhiaContextProvider(props: AridhiaContextProviderProps) {\n const {\n children,\n apiBasePath = 'https://gateway.westeurope.dap.c-path.org',\n authenticationRequest,\n } = props\n\n const contextValue: AridhiaContextType = {\n apiBasePath,\n authenticationRequest,\n }\n\n return (\n <AridhiaContext.Provider value={contextValue}>\n {children}\n </AridhiaContext.Provider>\n )\n}\n\n/**\n * Hook to access the Aridhia context containing the access token\n * @throws Error if used outside of AridhiaContextProvider\n */\nexport function useAridhiaContext(): AridhiaContextType {\n const context = useContext(AridhiaContext)\n if (!context) {\n throw new Error(\n 'useAridhiaContext must be used within an AridhiaContextProvider',\n )\n }\n return context\n}\n\n/**\n * Hook to access the Aridhia context, returning undefined if not within a provider.\n * Useful for optional Aridhia integration.\n */\nexport function useAridhiaContextOptional(): AridhiaContextType | undefined {\n return useContext(AridhiaContext)\n}\n"],"mappings":";;;AAgBA,IAAM,IAAiB,EAA8C,KAAA,EAAU;AAmB/E,SAAgB,EAAuB,GAAoC;CACzE,IAAM,EACJ,aACA,iBAAc,6CACd,6BACE,GAEE,IAAmC;EACvC;EACA;EACD;AAED,QACE,kBAAC,EAAe,UAAhB;EAAyB,OAAO;EAC7B;EACuB,CAAA;;AAQ9B,SAAgB,IAAwC;CACtD,IAAM,IAAU,EAAW,EAAe;AAC1C,KAAI,CAAC,EACH,OAAU,MACR,kEACD;AAEH,QAAO;;AAOT,SAAgB,IAA4D;AAC1E,QAAO,EAAW,EAAe"}
1
+ {"version":3,"file":"AridhiaContext.js","names":[],"sources":["../../../src/utils/context/AridhiaContext.tsx"],"sourcesContent":["import { createContext, PropsWithChildren, useContext } from 'react'\nimport { AuthenticationRequest } from '@sage-bionetworks/aridhia-client/generated/models'\n\nexport type AridhiaContextType = {\n /**\n * Base URL for the Aridhia Gateway API.\n * All API calls, including FAIR API calls, should go through the gateway.\n * For FAIR API calls, the gateway routes to /fair/<api path>\n */\n apiBasePath: string\n /**\n * Authentication request parameters for token exchange (excluding subject_token)\n */\n authenticationRequest: Omit<AuthenticationRequest, 'subject_token'>\n}\n\nconst AridhiaContext = createContext<AridhiaContextType | undefined>(undefined)\n\nexport type AridhiaContextProviderProps = PropsWithChildren<{\n /**\n * Base URL for the Aridhia Gateway API.\n * All API calls should go through this gateway.\n * @default 'https://gateway.westeurope.dap.c-path.org'\n */\n apiBasePath?: string\n /**\n * Authentication request parameters for token exchange\n */\n authenticationRequest: Omit<AuthenticationRequest, 'subject_token'>\n}>\n\n/**\n * Context provider that stores Aridhia API configuration.\n * Token exchange is handled by individual hooks/queries to ensure fresh tokens.\n */\nexport function AridhiaContextProvider(props: AridhiaContextProviderProps) {\n const {\n children,\n apiBasePath = 'https://gateway.westeurope.dap.c-path.org',\n authenticationRequest,\n } = props\n\n const contextValue: AridhiaContextType = {\n apiBasePath,\n authenticationRequest,\n }\n\n return (\n <AridhiaContext.Provider value={contextValue}>\n {children}\n </AridhiaContext.Provider>\n )\n}\n\n/**\n * Hook to access the Aridhia context containing the access token\n * @throws Error if used outside of AridhiaContextProvider\n */\nexport function useAridhiaContext(): AridhiaContextType {\n const context = useContext(AridhiaContext)\n if (!context) {\n throw new Error(\n 'useAridhiaContext must be used within an AridhiaContextProvider',\n )\n }\n return context\n}\n\n/**\n * Hook to access the Aridhia context, returning undefined if not within a provider.\n * Useful for optional Aridhia integration.\n */\nexport function useAridhiaContextOptional(): AridhiaContextType | undefined {\n return useContext(AridhiaContext)\n}\n"],"mappings":";;;AAgBA,IAAM,IAAiB,EAA8C,KAAA,CAAS;AAmB9E,SAAgB,EAAuB,GAAoC;CACzE,IAAM,EACJ,aACA,iBAAc,6CACd,6BACE,GAEE,IAAmC;EACvC;EACA;CACF;CAEA,OACE,kBAAC,EAAe,UAAhB;EAAyB,OAAO;EAC7B;CACsB,CAAA;AAE7B;AAMA,SAAgB,IAAwC;CACtD,IAAM,IAAU,EAAW,CAAc;CACzC,IAAI,CAAC,GACH,MAAU,MACR,iEACF;CAEF,OAAO;AACT;AAMA,SAAgB,IAA4D;CAC1E,OAAO,EAAW,CAAc;AAClC"}