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":"modelRowsToGrid.js","names":["DataGridRow","GridModel","GridModelSnapshot","isValidationUpToDateForRow","GRID_ROW_REACT_KEY_PROPERTY","logicalTimestampToString","extractColumnValidationMessages","modelRowsToGrid","model","modelSnapshot","columnNames","columnOrder","rows","gridRows","map","row","rowIndex","rowObj","forEach","index","columnName","data","api","obj","String","node","id","__validationResults","metadata","rowValidation","__validationStatus","isValid","allValidationMessages","__cellValidationResults"],"sources":["../../../../src/components/DataGrid/utils/modelRowsToGrid.ts"],"sourcesContent":["import {\n DataGridRow,\n GridModel,\n GridModelSnapshot,\n} from '@/components/DataGrid/DataGridTypes'\nimport { isValidationUpToDateForRow } from '@/components/DataGrid/utils/isValidationUpToDateForRow'\nimport { GRID_ROW_REACT_KEY_PROPERTY } from './DataGridUtils'\nimport logicalTimestampToString from '@/components/DataGrid/utils/logicalTimestampToString'\nimport { extractColumnValidationMessages } from './extractColumnValidationMessages'\n\n/**\n * Convert model rows to a format suitable for DataSheetGrid\n * @param model\n * @param modelSnapshot\n */\nexport default function modelRowsToGrid(\n model: GridModel | null,\n modelSnapshot: GridModelSnapshot,\n): DataGridRow[] {\n if (!model || !modelSnapshot) return []\n const { columnNames, columnOrder, rows } = modelSnapshot\n const gridRows = rows.map((row, rowIndex): DataGridRow => {\n const rowObj: DataGridRow = {}\n columnOrder.forEach((index: number) => {\n const columnName = columnNames[index]\n if (columnName) {\n rowObj[columnName] = row.data[index]\n }\n })\n\n // Embed the logical timestamp as a string for use as the React key (a stable value unique to each row)\n rowObj[GRID_ROW_REACT_KEY_PROPERTY] = logicalTimestampToString(\n model.api.obj(['rows', String(rowIndex)]).node.id,\n )\n\n rowObj.__validationResults = row.metadata?.rowValidation\n if (rowObj.__validationResults) {\n rowObj.__validationStatus = rowObj.__validationResults?.isValid\n ? 'valid'\n : 'invalid'\n }\n\n if (!isValidationUpToDateForRow(model, rowIndex)) {\n rowObj.__validationStatus = 'pending'\n }\n\n // Parse the validation messages into a Map of column name to messages\n if (rowObj.__validationResults?.allValidationMessages) {\n rowObj.__cellValidationResults = extractColumnValidationMessages(\n rowObj.__validationResults.allValidationMessages,\n )\n }\n\n return rowObj\n })\n return gridRows\n}\n"],"mappings":";;;;;AAeA,SAAwBO,EACtBC,GACAC,GACe;AACf,KAAI,CAACD,KAAS,CAACC,EAAe,QAAO,EAAE;CACvC,IAAM,EAAEC,gBAAaC,gBAAaC,YAASH;AAmC3C,QAlCiBG,EAAKE,KAAKC,GAAKC,MAA0B;EACxD,IAAMC,IAAsB,EAAE;AA+B9B,SA9BAN,EAAYO,SAASC,MAAkB;GACrC,IAAMC,IAAaV,EAAYS;AAC/B,GAAIC,MACFH,EAAOG,KAAcL,EAAIM,KAAKF;IAEhC,EAGFF,EAAOb,KAA+BC,EACpCG,EAAMc,IAAIC,IAAI,CAAC,QAAQC,OAAOR,EAAS,CAAC,CAAC,CAACS,KAAKC,GAChD,EAEDT,EAAOU,sBAAsBZ,EAAIa,UAAUC,eACvCZ,EAAOU,wBACTV,EAAOa,qBAAqBb,EAAOU,qBAAqBI,UACpD,UACA,YAGD5B,EAA2BK,GAAOQ,EAAS,KAC9CC,EAAOa,qBAAqB,YAI1Bb,EAAOU,qBAAqBK,0BAC9Bf,EAAOgB,0BAA0B3B,EAC/BW,EAAOU,oBAAoBK,sBAC5B,GAGIf;GAEFJ"}
1
+ {"version":3,"file":"modelRowsToGrid.js","names":["DataGridRow","GridModel","GridModelSnapshot","isValidationUpToDateForRow","GRID_ROW_REACT_KEY_PROPERTY","logicalTimestampToString","extractColumnValidationMessages","modelRowsToGrid","model","modelSnapshot","columnNames","columnOrder","rows","gridRows","map","row","rowIndex","rowObj","forEach","index","columnName","data","api","obj","String","node","id","__validationResults","metadata","rowValidation","__validationStatus","isValid","allValidationMessages","__cellValidationResults"],"sources":["../../../../src/components/DataGrid/utils/modelRowsToGrid.ts"],"sourcesContent":["import {\n DataGridRow,\n GridModel,\n GridModelSnapshot,\n} from '@/components/DataGrid/DataGridTypes'\nimport { isValidationUpToDateForRow } from '@/components/DataGrid/utils/isValidationUpToDateForRow'\nimport { GRID_ROW_REACT_KEY_PROPERTY } from './DataGridUtils'\nimport logicalTimestampToString from '@/components/DataGrid/utils/logicalTimestampToString'\nimport { extractColumnValidationMessages } from './extractColumnValidationMessages'\n\n/**\n * Convert model rows to a format suitable for DataSheetGrid\n * @param model\n * @param modelSnapshot\n */\nexport default function modelRowsToGrid(\n model: GridModel | null,\n modelSnapshot: GridModelSnapshot,\n): DataGridRow[] {\n if (!model || !modelSnapshot) return []\n const { columnNames, columnOrder, rows } = modelSnapshot\n const gridRows = rows.map((row, rowIndex): DataGridRow => {\n const rowObj: DataGridRow = {}\n columnOrder.forEach((index: number) => {\n const columnName = columnNames[index]\n if (columnName) {\n rowObj[columnName] = row.data[index]\n }\n })\n\n // Embed the logical timestamp as a string for use as the React key (a stable value unique to each row)\n rowObj[GRID_ROW_REACT_KEY_PROPERTY] = logicalTimestampToString(\n model.api.obj(['rows', String(rowIndex)]).node.id,\n )\n\n rowObj.__validationResults = row.metadata?.rowValidation\n if (rowObj.__validationResults) {\n rowObj.__validationStatus = rowObj.__validationResults?.isValid\n ? 'valid'\n : 'invalid'\n }\n\n if (!isValidationUpToDateForRow(model, rowIndex)) {\n rowObj.__validationStatus = 'pending'\n }\n\n // Parse the validation messages into a Map of column name to messages\n if (rowObj.__validationResults?.allValidationMessages) {\n rowObj.__cellValidationResults = extractColumnValidationMessages(\n rowObj.__validationResults.allValidationMessages,\n )\n }\n\n return rowObj\n })\n return gridRows\n}\n"],"mappings":";;;;;AAeA,SAAwBO,EACtBC,GACAC,GACe;CACf,IAAI,CAACD,KAAS,CAACC,GAAe,OAAO,CAAA;CACrC,IAAM,EAAEC,gBAAaC,gBAAaC,YAASH;CAmC3C,OAlCiBG,EAAKE,KAAKC,GAAKC,MAA0B;EACxD,IAAMC,IAAsB,CAAC;EA+B7B,OA9BAN,EAAYO,SAASC,MAAkB;GACrC,IAAMC,IAAaV,EAAYS;GAC/B,AAAIC,MACFH,EAAOG,KAAcL,EAAIM,KAAKF;EAElC,CAAC,GAGDF,EAAOb,KAA+BC,EACpCG,EAAMc,IAAIC,IAAI,CAAC,QAAQC,OAAOR,CAAQ,CAAC,CAAC,EAAES,KAAKC,EACjD,GAEAT,EAAOU,sBAAsBZ,EAAIa,UAAUC,eACvCZ,EAAOU,wBACTV,EAAOa,qBAAqBb,EAAOU,qBAAqBI,UACpD,UACA,YAGD5B,EAA2BK,GAAOQ,CAAQ,MAC7CC,EAAOa,qBAAqB,YAI1Bb,EAAOU,qBAAqBK,0BAC9Bf,EAAOgB,0BAA0B3B,EAC/BW,EAAOU,oBAAoBK,qBAC7B,IAGKf;CACT,CACOJ;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"parseFreeTextUsingJsonSchemaType.js","names":["JSONSchema7Type","parseFreeTextGivenJsonSchemaType","freeText","colType","String","trim","parsed","parseInt","Number","isNaN","toLowerCase","JSON","parse","e"],"sources":["../../../../src/components/DataGrid/utils/parseFreeTextUsingJsonSchemaType.ts"],"sourcesContent":["import { JSONSchema7Type } from 'json-schema'\n\nexport default function parseFreeTextGivenJsonSchemaType(\n freeText: string,\n colType?: JSONSchema7Type,\n): unknown {\n if (!colType || colType === 'string') {\n return String(freeText)\n } else if (colType === 'number' || colType === 'integer') {\n if (freeText.trim() === '') {\n // empty string parse result is 0, so treat it as empty\n return freeText\n }\n let parsed: number\n if (colType === 'integer') {\n parsed = parseInt(freeText, 10)\n } else {\n parsed = Number(freeText)\n }\n if (!isNaN(parsed)) {\n return parsed\n } else {\n return freeText\n }\n } else if (colType === 'boolean') {\n if (freeText.toLowerCase() === 'true') {\n return true\n } else if (freeText.toLowerCase() === 'false') {\n return false\n } else {\n return freeText\n }\n } else if (colType === 'object' || colType === 'array') {\n try {\n const parsed = JSON.parse(freeText)\n return parsed\n } catch (e) {\n // If we can't parse it, just set it to the input value\n return freeText\n }\n } else if (colType === 'null') {\n if (freeText.toLowerCase() === 'null' || freeText.trim() === '') {\n return null\n } else {\n return freeText\n }\n } else {\n // Unknown type, just set it to the input value\n return freeText\n }\n}\n"],"mappings":";AAEA,SAAwBC,EACtBC,GACAC,GACS;AACT,KAAI,CAACA,KAAWA,MAAY,SAC1B,QAAOC,OAAOF,EAAS;KACdC,MAAY,YAAYA,MAAY,WAAW;AACxD,MAAID,EAASG,MAAM,KAAK,GAEtB,QAAOH;EAET,IAAII;AAOF,SANF,AAGEA,IAHEH,MAAY,YACLI,SAASL,GAAU,GAAG,GAEtBM,OAAON,EAAS,EAEtBO,MAAMH,EAAO,GAGTJ,IAFAI;YAIAH,MAAY,UAMnB,QALED,EAASQ,aAAa,KAAK,SACtB,KACER,EAASQ,aAAa,KAAK,UAC7B,KAEAR;UAEAC,MAAY,YAAYA,MAAY,QAC7C,KAAI;AAEF,SADeQ,KAAKC,MAAMV,EACnBI;SACG;AAEV,SAAOJ;;UAEAC,MAAY,OAInB,QAHED,EAASQ,aAAa,KAAK,UAAUR,EAASG,MAAM,KAAK,KACpD,OAEAH;KAIT,QAAOA"}
1
+ {"version":3,"file":"parseFreeTextUsingJsonSchemaType.js","names":["JSONSchema7Type","parseFreeTextGivenJsonSchemaType","freeText","colType","String","trim","parsed","parseInt","Number","isNaN","toLowerCase","JSON","parse","e"],"sources":["../../../../src/components/DataGrid/utils/parseFreeTextUsingJsonSchemaType.ts"],"sourcesContent":["import { JSONSchema7Type } from 'json-schema'\n\nexport default function parseFreeTextGivenJsonSchemaType(\n freeText: string,\n colType?: JSONSchema7Type,\n): unknown {\n if (!colType || colType === 'string') {\n return String(freeText)\n } else if (colType === 'number' || colType === 'integer') {\n if (freeText.trim() === '') {\n // empty string parse result is 0, so treat it as empty\n return freeText\n }\n let parsed: number\n if (colType === 'integer') {\n parsed = parseInt(freeText, 10)\n } else {\n parsed = Number(freeText)\n }\n if (!isNaN(parsed)) {\n return parsed\n } else {\n return freeText\n }\n } else if (colType === 'boolean') {\n if (freeText.toLowerCase() === 'true') {\n return true\n } else if (freeText.toLowerCase() === 'false') {\n return false\n } else {\n return freeText\n }\n } else if (colType === 'object' || colType === 'array') {\n try {\n const parsed = JSON.parse(freeText)\n return parsed\n } catch (e) {\n // If we can't parse it, just set it to the input value\n return freeText\n }\n } else if (colType === 'null') {\n if (freeText.toLowerCase() === 'null' || freeText.trim() === '') {\n return null\n } else {\n return freeText\n }\n } else {\n // Unknown type, just set it to the input value\n return freeText\n }\n}\n"],"mappings":";AAEA,SAAwBC,EACtBC,GACAC,GACS;CACT,IAAI,CAACA,KAAWA,MAAY,UAC1B,OAAOC,OAAOF,CAAQ;CACjB,IAAIC,MAAY,YAAYA,MAAY,WAAW;EACxD,IAAID,EAASG,KAAK,MAAM,IAEtB,OAAOH;EAET,IAAII;EAOF,OANF,AAGEA,IAHEH,MAAY,YACLI,SAASL,GAAU,EAAE,IAErBM,OAAON,CAAQ,GAErBO,MAAMH,CAAM,IAGRJ,IAFAI;CAIX,OAAO,IAAIH,MAAY,WAMnB,OALED,EAASQ,YAAY,MAAM,SACtB,KACER,EAASQ,YAAY,MAAM,UAC7B,KAEAR;MAEJ,IAAIC,MAAY,YAAYA,MAAY,SAC7C,IAAI;EAEF,OADeQ,KAAKC,MAAMV,CACnBI;CACT,QAAY;EAEV,OAAOJ;CACT;MACK,IAAIC,MAAY,QAInB,OAHED,EAASQ,YAAY,MAAM,UAAUR,EAASG,KAAK,MAAM,KACpD,OAEAH;MAIT,OAAOA;AAEX"}
@@ -1 +1 @@
1
- {"version":3,"file":"replicaSelectionToGridSelection.js","names":["GridModel","ReplicaSelectionModel","CrdtId","GridSelectionRange","minRow","maxRow","columnNames","Set","crdtIdsToIndices","arrApi","ReturnType","ids","result","length","lookup","map","id","rep","seq","idx","chunk","node","chunks","del","offset","span","key","sid","time","has","add","replicaSelectionToGridSelection","selection","model","snapshot","api","getSnapshot","numRows","rows","numCols","rowSelectAll","rowIds","rowSelection","rowIndexSet","arr","size","reduce","a","b","Math","min","max","undefined","columnSelectAll","colIds","columnSelection","colIndexSet","colIdx","columnOrder","filter","name"],"sources":["../../../../src/components/DataGrid/utils/replicaSelectionToGridSelection.ts"],"sourcesContent":["import type { GridModel, ReplicaSelectionModel, CrdtId } from '../DataGridTypes'\n\nexport interface GridSelectionRange {\n minRow: number\n maxRow: number\n /** undefined means all columns are selected */\n columnNames: Set<string> | undefined\n}\n\n/**\n * Convert a flat array of CrdtIds to a Set of array indices by walking the\n * arr node's chunks.\n */\nfunction crdtIdsToIndices(\n arrApi: ReturnType<GridModel['api']['arr']>,\n ids: CrdtId[],\n): Set<number> {\n const result = new Set<number>()\n if (ids.length === 0) return result\n\n // Build a lookup set for O(1) membership test\n const lookup = new Set(ids.map(id => `${id.rep}:${id.seq}`))\n\n let idx = 0\n for (const chunk of arrApi.node.chunks()) {\n if (chunk.del) continue\n for (let offset = 0; offset < chunk.span; offset++) {\n const key = `${chunk.id.sid}:${chunk.id.time + offset}`\n if (lookup.has(key)) result.add(idx + offset)\n }\n idx += chunk.span\n }\n return result\n}\n\n/**\n * Converts a stored ReplicaSelectionModel (CRDT-stable IDs) back into a\n * plain grid selection range that can be used for cell class computation.\n *\n * This is the inverse of getCrdtIdsForArrayRange in computeReplicaSelectionModel.\n */\nexport function replicaSelectionToGridSelection(\n selection: ReplicaSelectionModel | null | undefined,\n model: GridModel,\n): GridSelectionRange | null {\n if (!selection) return null\n\n const snapshot = model.api.getSnapshot()\n const numRows = snapshot.rows.length\n const numCols = snapshot.columnNames.length\n\n if (numRows < 1 || numCols < 1) return null\n\n // ── Row range ────────────────────────────────────────────────────────────\n let minRow = 0\n let maxRow = numRows - 1\n\n if (!selection.rowSelectAll) {\n const rowIds = selection.rowSelection\n if (!rowIds || rowIds.length === 0) return null\n\n const rowIndexSet = crdtIdsToIndices(model.api.arr(['rows']), rowIds)\n if (rowIndexSet.size === 0) return null\n minRow = [...rowIndexSet].reduce((a, b) => Math.min(a, b))\n maxRow = [...rowIndexSet].reduce((a, b) => Math.max(a, b))\n }\n\n // ── Column range ─────────────────────────────────────────────────────────\n let columnNames: Set<string> | undefined = undefined // undefined = all columns\n\n if (!selection.columnSelectAll) {\n const colIds = selection.columnSelection\n if (!colIds || colIds.length === 0) return null\n\n const colIndexSet = crdtIdsToIndices(model.api.arr(['columnOrder']), colIds)\n if (colIndexSet.size === 0) return null\n columnNames = new Set(\n [...colIndexSet]\n .map(colIdx => snapshot.columnNames[snapshot.columnOrder[colIdx]])\n .filter((name): name is string => name !== undefined),\n )\n }\n\n return { minRow, maxRow, columnNames }\n}\n"],"mappings":";AAaA,SAASQ,EACPC,GACAE,GACa;CACb,IAAMC,oBAAS,IAAIL,KAAa;AAChC,KAAII,EAAIE,WAAW,EAAG,QAAOD;CAG7B,IAAME,IAAS,IAAIP,IAAII,EAAII,KAAIC,MAAM,GAAGA,EAAGC,IAAG,GAAID,EAAGE,MAAM,CAAC,EAExDC,IAAM;AACV,MAAK,IAAMC,KAASX,EAAOY,KAAKC,QAAQ,CAClCF,QAAMG,KACV;OAAK,IAAIC,IAAS,GAAGA,IAASJ,EAAMK,MAAMD,KAAU;GAClD,IAAME,IAAM,GAAGN,EAAMJ,GAAGW,IAAG,GAAIP,EAAMJ,GAAGY,OAAOJ;AAC/C,GAAIV,EAAOe,IAAIH,EAAI,IAAEd,EAAOkB,IAAIX,IAAMK,EAAO;;AAE/CL,OAAOC,EAAMK;;AAEf,QAAOb;;AAST,SAAgBmB,EACdC,GACAC,GAC2B;AAC3B,KAAI,CAACD,EAAW,QAAO;CAEvB,IAAME,IAAWD,EAAME,IAAIC,aAAa,EAClCC,IAAUH,EAASI,KAAKzB,QACxB0B,IAAUL,EAAS5B,YAAYO;AAErC,KAAIwB,IAAU,KAAKE,IAAU,EAAG,QAAO;CAGvC,IAAInC,IAAS,GACTC,IAASgC,IAAU;AAEvB,KAAI,CAACL,EAAUQ,cAAc;EAC3B,IAAMC,IAAST,EAAUU;AACzB,MAAI,CAACD,KAAUA,EAAO5B,WAAW,EAAG,QAAO;EAE3C,IAAM8B,IAAcnC,EAAiByB,EAAME,IAAIS,IAAI,CAAC,OAAO,CAAC,EAAEH,EAAO;AACrE,MAAIE,EAAYE,SAAS,EAAG,QAAO;AAEnCxC,EADAD,IAAS,CAAC,GAAGuC,EAAY,CAACG,QAAQC,GAAGC,MAAMC,KAAKC,IAAIH,GAAGC,EAAE,CAAC,EAC1D3C,IAAS,CAAC,GAAGsC,EAAY,CAACG,QAAQC,GAAGC,MAAMC,KAAKE,IAAIJ,GAAGC,EAAE,CAAC;;CAI5D,IAAI1C;AAEJ,KAAI,CAAC0B,EAAUqB,iBAAiB;EAC9B,IAAMC,IAAStB,EAAUuB;AACzB,MAAI,CAACD,KAAUA,EAAOzC,WAAW,EAAG,QAAO;EAE3C,IAAM2C,IAAchD,EAAiByB,EAAME,IAAIS,IAAI,CAAC,cAAc,CAAC,EAAEU,EAAO;AAC5E,MAAIE,EAAYX,SAAS,EAAG,QAAO;AACnCvC,MAAc,IAAIC,IAChB,CAAC,GAAGiD,EAAY,CACbzC,KAAI0C,MAAUvB,EAAS5B,YAAY4B,EAASwB,YAAYD,IAAS,CACjEE,QAAQC,MAAyBA,MAASR,KAAAA,EAC/C,CAAC;;AAGH,QAAO;EAAEhD;EAAQC;EAAQC;EAAa"}
1
+ {"version":3,"file":"replicaSelectionToGridSelection.js","names":["GridModel","ReplicaSelectionModel","CrdtId","GridSelectionRange","minRow","maxRow","columnNames","Set","crdtIdsToIndices","arrApi","ReturnType","ids","result","length","lookup","map","id","rep","seq","idx","chunk","node","chunks","del","offset","span","key","sid","time","has","add","replicaSelectionToGridSelection","selection","model","snapshot","api","getSnapshot","numRows","rows","numCols","rowSelectAll","rowIds","rowSelection","rowIndexSet","arr","size","reduce","a","b","Math","min","max","undefined","columnSelectAll","colIds","columnSelection","colIndexSet","colIdx","columnOrder","filter","name"],"sources":["../../../../src/components/DataGrid/utils/replicaSelectionToGridSelection.ts"],"sourcesContent":["import type { GridModel, ReplicaSelectionModel, CrdtId } from '../DataGridTypes'\n\nexport interface GridSelectionRange {\n minRow: number\n maxRow: number\n /** undefined means all columns are selected */\n columnNames: Set<string> | undefined\n}\n\n/**\n * Convert a flat array of CrdtIds to a Set of array indices by walking the\n * arr node's chunks.\n */\nfunction crdtIdsToIndices(\n arrApi: ReturnType<GridModel['api']['arr']>,\n ids: CrdtId[],\n): Set<number> {\n const result = new Set<number>()\n if (ids.length === 0) return result\n\n // Build a lookup set for O(1) membership test\n const lookup = new Set(ids.map(id => `${id.rep}:${id.seq}`))\n\n let idx = 0\n for (const chunk of arrApi.node.chunks()) {\n if (chunk.del) continue\n for (let offset = 0; offset < chunk.span; offset++) {\n const key = `${chunk.id.sid}:${chunk.id.time + offset}`\n if (lookup.has(key)) result.add(idx + offset)\n }\n idx += chunk.span\n }\n return result\n}\n\n/**\n * Converts a stored ReplicaSelectionModel (CRDT-stable IDs) back into a\n * plain grid selection range that can be used for cell class computation.\n *\n * This is the inverse of getCrdtIdsForArrayRange in computeReplicaSelectionModel.\n */\nexport function replicaSelectionToGridSelection(\n selection: ReplicaSelectionModel | null | undefined,\n model: GridModel,\n): GridSelectionRange | null {\n if (!selection) return null\n\n const snapshot = model.api.getSnapshot()\n const numRows = snapshot.rows.length\n const numCols = snapshot.columnNames.length\n\n if (numRows < 1 || numCols < 1) return null\n\n // ── Row range ────────────────────────────────────────────────────────────\n let minRow = 0\n let maxRow = numRows - 1\n\n if (!selection.rowSelectAll) {\n const rowIds = selection.rowSelection\n if (!rowIds || rowIds.length === 0) return null\n\n const rowIndexSet = crdtIdsToIndices(model.api.arr(['rows']), rowIds)\n if (rowIndexSet.size === 0) return null\n minRow = [...rowIndexSet].reduce((a, b) => Math.min(a, b))\n maxRow = [...rowIndexSet].reduce((a, b) => Math.max(a, b))\n }\n\n // ── Column range ─────────────────────────────────────────────────────────\n let columnNames: Set<string> | undefined = undefined // undefined = all columns\n\n if (!selection.columnSelectAll) {\n const colIds = selection.columnSelection\n if (!colIds || colIds.length === 0) return null\n\n const colIndexSet = crdtIdsToIndices(model.api.arr(['columnOrder']), colIds)\n if (colIndexSet.size === 0) return null\n columnNames = new Set(\n [...colIndexSet]\n .map(colIdx => snapshot.columnNames[snapshot.columnOrder[colIdx]])\n .filter((name): name is string => name !== undefined),\n )\n }\n\n return { minRow, maxRow, columnNames }\n}\n"],"mappings":";AAaA,SAASQ,EACPC,GACAE,GACa;CACb,IAAMC,oBAAS,IAAIL,IAAY;CAC/B,IAAII,EAAIE,WAAW,GAAG,OAAOD;CAG7B,IAAME,IAAS,IAAIP,IAAII,EAAII,KAAIC,MAAM,GAAGA,EAAGC,IAAG,GAAID,EAAGE,KAAK,CAAC,GAEvDC,IAAM;CACV,KAAK,IAAMC,KAASX,EAAOY,KAAKC,OAAO,GACjCF,OAAMG,KACV;OAAK,IAAIC,IAAS,GAAGA,IAASJ,EAAMK,MAAMD,KAAU;GAClD,IAAME,IAAM,GAAGN,EAAMJ,GAAGW,IAAG,GAAIP,EAAMJ,GAAGY,OAAOJ;GAC/C,AAAIV,EAAOe,IAAIH,CAAG,KAAGd,EAAOkB,IAAIX,IAAMK,CAAM;EAC9C;EACAL,KAAOC,EAAMK;CADb;CAGF,OAAOb;AACT;AAQA,SAAgBmB,EACdC,GACAC,GAC2B;CAC3B,IAAI,CAACD,GAAW,OAAO;CAEvB,IAAME,IAAWD,EAAME,IAAIC,YAAY,GACjCC,IAAUH,EAASI,KAAKzB,QACxB0B,IAAUL,EAAS5B,YAAYO;CAErC,IAAIwB,IAAU,KAAKE,IAAU,GAAG,OAAO;CAGvC,IAAInC,IAAS,GACTC,IAASgC,IAAU;CAEvB,IAAI,CAACL,EAAUQ,cAAc;EAC3B,IAAMC,IAAST,EAAUU;EACzB,IAAI,CAACD,KAAUA,EAAO5B,WAAW,GAAG,OAAO;EAE3C,IAAM8B,IAAcnC,EAAiByB,EAAME,IAAIS,IAAI,CAAC,MAAM,CAAC,GAAGH,CAAM;EACpE,IAAIE,EAAYE,SAAS,GAAG,OAAO;EAEnCxC,AADAD,IAAS,CAAC,GAAGuC,CAAW,EAAEG,QAAQC,GAAGC,MAAMC,KAAKC,IAAIH,GAAGC,CAAC,CAAC,GACzD3C,IAAS,CAAC,GAAGsC,CAAW,EAAEG,QAAQC,GAAGC,MAAMC,KAAKE,IAAIJ,GAAGC,CAAC,CAAC;CAC3D;CAGA,IAAI1C;CAEJ,IAAI,CAAC0B,EAAUqB,iBAAiB;EAC9B,IAAMC,IAAStB,EAAUuB;EACzB,IAAI,CAACD,KAAUA,EAAOzC,WAAW,GAAG,OAAO;EAE3C,IAAM2C,IAAchD,EAAiByB,EAAME,IAAIS,IAAI,CAAC,aAAa,CAAC,GAAGU,CAAM;EAC3E,IAAIE,EAAYX,SAAS,GAAG,OAAO;EACnCvC,IAAc,IAAIC,IAChB,CAAC,GAAGiD,CAAW,EACZzC,KAAI0C,MAAUvB,EAAS5B,YAAY4B,EAASwB,YAAYD,GAAQ,EAChEE,QAAQC,MAAyBA,MAASR,KAAAA,CAAS,CACxD;CACF;CAEA,OAAO;EAAEhD;EAAQC;EAAQC;CAAY;AACvC"}
@@ -1 +1 @@
1
- {"version":3,"file":"schemaAwarePasteValue.js","names":["Column","SchemaPropertyInfo","getEmptyValue","coerceModelCellValue","value","schemaPropertyInfo","undefined","trim","isRequired","PasteValueFn","NonNullable","T","PasteValue","wrapPasteValueWithSchemaCoercion","Record","originalPasteValue","columnName","rowData","rowIndex","result","cellValue","coerced"],"sources":["../../../../src/components/DataGrid/utils/schemaAwarePasteValue.ts"],"sourcesContent":["import type { Column } from '@sage-bionetworks/react-datasheet-grid'\nimport type { SchemaPropertyInfo } from '@/utils/jsonschema/getSchemaPropertyInfo'\nimport { getEmptyValue } from './getEmptyValue'\n\n/**\n * Coerce an empty cell value to the schema-correct blank before it reaches\n * the model, regardless of how the edit originated (paste, free-typed commit,\n * programmatic CREATE/UPDATE, etc.).\n *\n * - Optional columns -> undefined (property is absent and passes validation\n * for any optional type).\n * - Required columns -> null (validator surfaces a substantive error the\n * user can act on).\n *\n * \"Empty\" means null, undefined, or a whitespace-only string. Spreadsheet\n * clipboard formats (text/html in particular) can encode visually empty\n * cells as runs of `\\n` from stacked `<br>` tags, so the trim check covers\n * those alongside literal \"\". Empty arrays are not coerced because some\n * columns (e.g. multi-enum) emit [] from their own paste logic and that is\n * the desired in-model representation.\n *\n * If schemaPropertyInfo is omitted, the original value is returned unchanged.\n */\nexport function coerceModelCellValue(\n value: unknown,\n schemaPropertyInfo?: SchemaPropertyInfo,\n): unknown {\n if (!schemaPropertyInfo) {\n return value\n }\n if (\n value === null ||\n value === undefined ||\n (typeof value === 'string' && value.trim() === '')\n ) {\n return getEmptyValue(schemaPropertyInfo.isRequired)\n }\n return value\n}\n\ntype PasteValueFn<T, PasteValue> = NonNullable<\n Column<T, unknown, PasteValue>['pasteValue']\n>\n\n/**\n * Wraps a keyed column's `pasteValue` so that an empty pasted cell is coerced\n * to the schema-correct blank for the column. If `schemaPropertyInfo` is\n * omitted (e.g. the grid is rendered without a JSON schema), the original\n * paste behavior is preserved.\n */\nexport function wrapPasteValueWithSchemaCoercion<\n T extends Record<string, unknown>,\n PasteValue,\n>(\n originalPasteValue: PasteValueFn<T, PasteValue> | undefined,\n columnName: string,\n schemaPropertyInfo?: SchemaPropertyInfo,\n): PasteValueFn<T, PasteValue> | undefined {\n if (!originalPasteValue || !schemaPropertyInfo) {\n return originalPasteValue\n }\n return ({ rowData, value, rowIndex }) => {\n const result = originalPasteValue({ rowData, value, rowIndex })\n const cellValue = result[columnName]\n const coerced = coerceModelCellValue(cellValue, schemaPropertyInfo)\n if (coerced === cellValue) {\n return result\n }\n return { ...result, [columnName]: coerced } as T\n }\n}\n"],"mappings":";;AAuBA,SAAgBG,EACdC,GACAC,GACS;AAWT,QAVKA,MAIHD,KAAU,QAET,OAAOA,KAAU,YAAYA,EAAMG,MAAM,KAAK,MAExCL,EAAcG,EAAmBG,WAAW,GAE9CJ;;AAaT,SAAgBS,EAIdE,GACAC,GACAX,GACyC;AAIzC,QAHI,CAACU,KAAsB,CAACV,IACnBU,KAED,EAAEE,YAASb,UAAOc,kBAAe;EACvC,IAAMC,IAASJ,EAAmB;GAAEE;GAASb;GAAOc;GAAU,CAAC,EACzDE,IAAYD,EAAOH,IACnBK,IAAUlB,EAAqBiB,GAAWf,EAAmB;AAInE,SAHIgB,MAAYD,IACPD,IAEF;GAAE,GAAGA;IAASH,IAAaK;GAAS"}
1
+ {"version":3,"file":"schemaAwarePasteValue.js","names":["Column","SchemaPropertyInfo","getEmptyValue","coerceModelCellValue","value","schemaPropertyInfo","undefined","trim","isRequired","PasteValueFn","NonNullable","T","PasteValue","wrapPasteValueWithSchemaCoercion","Record","originalPasteValue","columnName","rowData","rowIndex","result","cellValue","coerced"],"sources":["../../../../src/components/DataGrid/utils/schemaAwarePasteValue.ts"],"sourcesContent":["import type { Column } from '@sage-bionetworks/react-datasheet-grid'\nimport type { SchemaPropertyInfo } from '@/utils/jsonschema/getSchemaPropertyInfo'\nimport { getEmptyValue } from './getEmptyValue'\n\n/**\n * Coerce an empty cell value to the schema-correct blank before it reaches\n * the model, regardless of how the edit originated (paste, free-typed commit,\n * programmatic CREATE/UPDATE, etc.).\n *\n * - Optional columns -> undefined (property is absent and passes validation\n * for any optional type).\n * - Required columns -> null (validator surfaces a substantive error the\n * user can act on).\n *\n * \"Empty\" means null, undefined, or a whitespace-only string. Spreadsheet\n * clipboard formats (text/html in particular) can encode visually empty\n * cells as runs of `\\n` from stacked `<br>` tags, so the trim check covers\n * those alongside literal \"\". Empty arrays are not coerced because some\n * columns (e.g. multi-enum) emit [] from their own paste logic and that is\n * the desired in-model representation.\n *\n * If schemaPropertyInfo is omitted, the original value is returned unchanged.\n */\nexport function coerceModelCellValue(\n value: unknown,\n schemaPropertyInfo?: SchemaPropertyInfo,\n): unknown {\n if (!schemaPropertyInfo) {\n return value\n }\n if (\n value === null ||\n value === undefined ||\n (typeof value === 'string' && value.trim() === '')\n ) {\n return getEmptyValue(schemaPropertyInfo.isRequired)\n }\n return value\n}\n\ntype PasteValueFn<T, PasteValue> = NonNullable<\n Column<T, unknown, PasteValue>['pasteValue']\n>\n\n/**\n * Wraps a keyed column's `pasteValue` so that an empty pasted cell is coerced\n * to the schema-correct blank for the column. If `schemaPropertyInfo` is\n * omitted (e.g. the grid is rendered without a JSON schema), the original\n * paste behavior is preserved.\n */\nexport function wrapPasteValueWithSchemaCoercion<\n T extends Record<string, unknown>,\n PasteValue,\n>(\n originalPasteValue: PasteValueFn<T, PasteValue> | undefined,\n columnName: string,\n schemaPropertyInfo?: SchemaPropertyInfo,\n): PasteValueFn<T, PasteValue> | undefined {\n if (!originalPasteValue || !schemaPropertyInfo) {\n return originalPasteValue\n }\n return ({ rowData, value, rowIndex }) => {\n const result = originalPasteValue({ rowData, value, rowIndex })\n const cellValue = result[columnName]\n const coerced = coerceModelCellValue(cellValue, schemaPropertyInfo)\n if (coerced === cellValue) {\n return result\n }\n return { ...result, [columnName]: coerced } as T\n }\n}\n"],"mappings":";;AAuBA,SAAgBG,EACdC,GACAC,GACS;CAWT,OAVKA,MAIHD,KAAU,QAET,OAAOA,KAAU,YAAYA,EAAMG,KAAK,MAAM,MAExCL,EAAcG,EAAmBG,UAAU,IAE7CJ;AACT;AAYA,SAAgBS,EAIdE,GACAC,GACAX,GACyC;CAIzC,OAHI,CAACU,KAAsB,CAACV,IACnBU,KAED,EAAEE,YAASb,UAAOc,kBAAe;EACvC,IAAMC,IAASJ,EAAmB;GAAEE;GAASb;GAAOc;EAAS,CAAC,GACxDE,IAAYD,EAAOH,IACnBK,IAAUlB,EAAqBiB,GAAWf,CAAkB;EAIlE,OAHIgB,MAAYD,IACPD,IAEF;GAAE,GAAGA;IAASH,IAAaK;EAAQ;CAC5C;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"splitPatch.js","names":["Patch","CompactCodecPatch","decode","encode","CompactCodecOperation","CompactCodecTimestamp","getPatchSizeInBytes","patch","TextEncoder","JSON","stringify","length","computeNextPatchHeader","lastPatch","decodedPatch","lastPatchHeader","getId","lastPatchSpan","span","sid","time","splitPatch","maxPatchSizeBytes","ops","binaryEncodedPatch","sizeOfFullPatch","console","warn","firstPatchHeader","splitPatches","currentSplitPatch","i","currentSplitPatchOpCount","sizeOfCurrentSplitPatchWithNextOp","push"],"sources":["../../../../src/components/DataGrid/utils/splitPatch.ts"],"sourcesContent":["import { Patch } from 'json-joy/lib/json-crdt'\nimport {\n CompactCodecPatch,\n decode,\n encode,\n} from 'json-joy/lib/json-crdt-patch/codec/compact'\nimport {\n CompactCodecOperation,\n CompactCodecTimestamp,\n} from 'json-joy/lib/json-crdt-patch/codec/compact/types'\n\n/**\n * Calculates the size in bytes of the UTF-8 string representation of a compact-encoded JSON CRDT Patch.\n * This is useful for determining the size of patch that will be sent in a WebSocket connection, which requires UTF-8\n * encoding.\n * @param patch the compact-encoded JSON CRDT Patch\n * @returns the size in bytes of the UTF-8 string representation of the patch\n */\nexport function getPatchSizeInBytes(patch: CompactCodecPatch): number {\n return new TextEncoder().encode(JSON.stringify(patch)).length\n}\n\n/**\n * Computes the header for the next JSON CRDT patch based on the last patch.\n * @param lastPatch - the previous JSON CRDT patch\n * @returns the header for the next patch, which includes the replica ID and the next timestamp\n */\nfunction computeNextPatchHeader(\n lastPatch: CompactCodecPatch,\n): [CompactCodecTimestamp] {\n // TODO: Compute the next patch header without decoding the entire patch\n // decoding it is inefficient, but easy because it lets us easily compute the span.\n const decodedPatch = decode(lastPatch)\n\n const lastPatchHeader = decodedPatch.getId()!\n const lastPatchSpan = decodedPatch.span()\n\n return [[lastPatchHeader?.sid, lastPatchHeader.time + lastPatchSpan]]\n}\n\n/**\n * Given a json-joy JSON CRDT Patch, splits it into multiple patches if its compact encoding\n * exceeds the specified maximum size in bytes.\n * @param patch\n * @param maxPatchSizeBytes\n * @returns An array of patches that are compact-encoded. Each patch is guaranteed to be within the specified size limit, or to only contain\n * a single operation if it cannot be split further.\n */\nexport function splitPatch(\n patch: Patch,\n maxPatchSizeBytes: number,\n): CompactCodecPatch[] {\n if (!patch.ops || patch.ops.length === 0) {\n return []\n }\n\n const binaryEncodedPatch = encode(patch)\n const sizeOfFullPatch = getPatchSizeInBytes(binaryEncodedPatch)\n\n // Check if this patch needs to be split\n if (sizeOfFullPatch <= maxPatchSizeBytes) {\n return [binaryEncodedPatch]\n }\n\n if (patch.ops.length == 1) {\n console.warn(\n `Patch is too large (${sizeOfFullPatch} B) but cannot be split further since it only contains one operation.`,\n )\n return [binaryEncodedPatch]\n }\n\n const firstPatchHeader = binaryEncodedPatch[0]\n const splitPatches: CompactCodecPatch[] = []\n let currentSplitPatch: CompactCodecPatch = [firstPatchHeader]\n for (let i = 1; i < binaryEncodedPatch.length; i += 1) {\n const currentSplitPatchOpCount = currentSplitPatch.length - 1 // Exclude header\n const sizeOfCurrentSplitPatchWithNextOp = getPatchSizeInBytes([\n ...currentSplitPatch,\n binaryEncodedPatch[i] as CompactCodecOperation,\n ])\n if (\n sizeOfCurrentSplitPatchWithNextOp > maxPatchSizeBytes &&\n currentSplitPatchOpCount > 0\n ) {\n splitPatches.push(currentSplitPatch)\n currentSplitPatch = [computeNextPatchHeader(currentSplitPatch)]\n }\n currentSplitPatch.push(binaryEncodedPatch[i] as CompactCodecOperation)\n }\n if (currentSplitPatch.length > 1) {\n splitPatches.push(currentSplitPatch)\n }\n\n return splitPatches\n}\n"],"mappings":";;AAkBA,SAAgBM,EAAoBC,GAAkC;AACpE,QAAO,IAAIC,aAAa,CAACL,OAAOM,KAAKC,UAAUH,EAAM,CAAC,CAACI;;AAQzD,SAASC,EACPC,GACyB;CAGzB,IAAMC,IAAeZ,EAAOW,EAAU,EAEhCE,IAAkBD,EAAaE,OAAO,EACtCC,IAAgBH,EAAaI,MAAM;AAEzC,QAAO,CAAC,CAACH,GAAiBI,KAAKJ,EAAgBK,OAAOH,EAAc,CAAC;;AAWvE,SAAgBI,EACdd,GACAe,GACqB;AACrB,KAAI,CAACf,EAAMgB,OAAOhB,EAAMgB,IAAIZ,WAAW,EACrC,QAAO,EAAE;CAGX,IAAMa,IAAqBrB,EAAOI,EAAM,EAClCkB,IAAkBnB,EAAoBkB,EAAmB;AAG/D,KAAIC,KAAmBH,EACrB,QAAO,CAACE,EAAmB;AAG7B,KAAIjB,EAAMgB,IAAIZ,UAAU,EAItB,QAHAe,QAAQC,KACN,uBAAuBF,EAAe,uEACvC,EACM,CAACD,EAAmB;CAG7B,IAAMI,IAAmBJ,EAAmB,IACtCK,IAAoC,EAAE,EACxCC,IAAuC,CAACF,EAAiB;AAC7D,MAAK,IAAIG,IAAI,GAAGA,IAAIP,EAAmBb,QAAQoB,KAAK,GAAG;EACrD,IAAMC,IAA2BF,EAAkBnB,SAAS;AAY5DmB,EAX0CxB,EAAoB,CAC5D,GAAGwB,GACHN,EAAmBO,GACpB,CAECE,GAAoCX,KACpCU,IAA2B,MAE3BH,EAAaK,KAAKJ,EAAkB,EACpCA,IAAoB,CAAClB,EAAuBkB,EAAkB,CAAC,GAEjEA,EAAkBI,KAAKV,EAAmBO,GAA4B;;AAMxE,QAJID,EAAkBnB,SAAS,KAC7BkB,EAAaK,KAAKJ,EAAkB,EAG/BD"}
1
+ {"version":3,"file":"splitPatch.js","names":["Patch","CompactCodecPatch","decode","encode","CompactCodecOperation","CompactCodecTimestamp","getPatchSizeInBytes","patch","TextEncoder","JSON","stringify","length","computeNextPatchHeader","lastPatch","decodedPatch","lastPatchHeader","getId","lastPatchSpan","span","sid","time","splitPatch","maxPatchSizeBytes","ops","binaryEncodedPatch","sizeOfFullPatch","console","warn","firstPatchHeader","splitPatches","currentSplitPatch","i","currentSplitPatchOpCount","sizeOfCurrentSplitPatchWithNextOp","push"],"sources":["../../../../src/components/DataGrid/utils/splitPatch.ts"],"sourcesContent":["import { Patch } from 'json-joy/lib/json-crdt'\nimport {\n CompactCodecPatch,\n decode,\n encode,\n} from 'json-joy/lib/json-crdt-patch/codec/compact'\nimport {\n CompactCodecOperation,\n CompactCodecTimestamp,\n} from 'json-joy/lib/json-crdt-patch/codec/compact/types'\n\n/**\n * Calculates the size in bytes of the UTF-8 string representation of a compact-encoded JSON CRDT Patch.\n * This is useful for determining the size of patch that will be sent in a WebSocket connection, which requires UTF-8\n * encoding.\n * @param patch the compact-encoded JSON CRDT Patch\n * @returns the size in bytes of the UTF-8 string representation of the patch\n */\nexport function getPatchSizeInBytes(patch: CompactCodecPatch): number {\n return new TextEncoder().encode(JSON.stringify(patch)).length\n}\n\n/**\n * Computes the header for the next JSON CRDT patch based on the last patch.\n * @param lastPatch - the previous JSON CRDT patch\n * @returns the header for the next patch, which includes the replica ID and the next timestamp\n */\nfunction computeNextPatchHeader(\n lastPatch: CompactCodecPatch,\n): [CompactCodecTimestamp] {\n // TODO: Compute the next patch header without decoding the entire patch\n // decoding it is inefficient, but easy because it lets us easily compute the span.\n const decodedPatch = decode(lastPatch)\n\n const lastPatchHeader = decodedPatch.getId()!\n const lastPatchSpan = decodedPatch.span()\n\n return [[lastPatchHeader?.sid, lastPatchHeader.time + lastPatchSpan]]\n}\n\n/**\n * Given a json-joy JSON CRDT Patch, splits it into multiple patches if its compact encoding\n * exceeds the specified maximum size in bytes.\n * @param patch\n * @param maxPatchSizeBytes\n * @returns An array of patches that are compact-encoded. Each patch is guaranteed to be within the specified size limit, or to only contain\n * a single operation if it cannot be split further.\n */\nexport function splitPatch(\n patch: Patch,\n maxPatchSizeBytes: number,\n): CompactCodecPatch[] {\n if (!patch.ops || patch.ops.length === 0) {\n return []\n }\n\n const binaryEncodedPatch = encode(patch)\n const sizeOfFullPatch = getPatchSizeInBytes(binaryEncodedPatch)\n\n // Check if this patch needs to be split\n if (sizeOfFullPatch <= maxPatchSizeBytes) {\n return [binaryEncodedPatch]\n }\n\n if (patch.ops.length == 1) {\n console.warn(\n `Patch is too large (${sizeOfFullPatch} B) but cannot be split further since it only contains one operation.`,\n )\n return [binaryEncodedPatch]\n }\n\n const firstPatchHeader = binaryEncodedPatch[0]\n const splitPatches: CompactCodecPatch[] = []\n let currentSplitPatch: CompactCodecPatch = [firstPatchHeader]\n for (let i = 1; i < binaryEncodedPatch.length; i += 1) {\n const currentSplitPatchOpCount = currentSplitPatch.length - 1 // Exclude header\n const sizeOfCurrentSplitPatchWithNextOp = getPatchSizeInBytes([\n ...currentSplitPatch,\n binaryEncodedPatch[i] as CompactCodecOperation,\n ])\n if (\n sizeOfCurrentSplitPatchWithNextOp > maxPatchSizeBytes &&\n currentSplitPatchOpCount > 0\n ) {\n splitPatches.push(currentSplitPatch)\n currentSplitPatch = [computeNextPatchHeader(currentSplitPatch)]\n }\n currentSplitPatch.push(binaryEncodedPatch[i] as CompactCodecOperation)\n }\n if (currentSplitPatch.length > 1) {\n splitPatches.push(currentSplitPatch)\n }\n\n return splitPatches\n}\n"],"mappings":";;AAkBA,SAAgBM,EAAoBC,GAAkC;CACpE,OAAO,IAAIC,YAAY,EAAEL,OAAOM,KAAKC,UAAUH,CAAK,CAAC,EAAEI;AACzD;AAOA,SAASC,EACPC,GACyB;CAGzB,IAAMC,IAAeZ,EAAOW,CAAS,GAE/BE,IAAkBD,EAAaE,MAAM,GACrCC,IAAgBH,EAAaI,KAAK;CAExC,OAAO,CAAC,CAACH,GAAiBI,KAAKJ,EAAgBK,OAAOH,CAAa,CAAC;AACtE;AAUA,SAAgBI,EACdd,GACAe,GACqB;CACrB,IAAI,CAACf,EAAMgB,OAAOhB,EAAMgB,IAAIZ,WAAW,GACrC,OAAO,CAAA;CAGT,IAAMa,IAAqBrB,EAAOI,CAAK,GACjCkB,IAAkBnB,EAAoBkB,CAAkB;CAG9D,IAAIC,KAAmBH,GACrB,OAAO,CAACE,CAAkB;CAG5B,IAAIjB,EAAMgB,IAAIZ,UAAU,GAItB,OAHAe,QAAQC,KACN,uBAAuBF,EAAe,sEACxC,GACO,CAACD,CAAkB;CAG5B,IAAMI,IAAmBJ,EAAmB,IACtCK,IAAoC,CAAA,GACtCC,IAAuC,CAACF,CAAgB;CAC5D,KAAK,IAAIG,IAAI,GAAGA,IAAIP,EAAmBb,QAAQoB,KAAK,GAAG;EACrD,IAAMC,IAA2BF,EAAkBnB,SAAS;EAY5DmB,AAX0CxB,EAAoB,CAC5D,GAAGwB,GACHN,EAAmBO,EAA2B,CAG9CE,IAAoCX,KACpCU,IAA2B,MAE3BH,EAAaK,KAAKJ,CAAiB,GACnCA,IAAoB,CAAClB,EAAuBkB,CAAiB,CAAC,IAEhEA,EAAkBI,KAAKV,EAAmBO,EAA2B;CACvE;CAKA,OAJID,EAAkBnB,SAAS,KAC7BkB,EAAaK,KAAKJ,CAAiB,GAG9BD;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"DatasetJsonLdScript.js","names":[],"sources":["../../src/components/DatasetJsonLdScript.tsx"],"sourcesContent":["import {\n useFileContent,\n useGetQueryResultBundleWithAsyncStatus,\n} from '@/synapse-queries'\nimport useJsonLdScriptElement from '@/utils/hooks/useJsonLdScriptElement'\nimport { BUNDLE_MASK_QUERY_RESULTS } from '@/utils/SynapseConstants'\nimport {\n ColumnSingleValueFilterOperator,\n COLUMN_SINGLE_VALUE_QUERY_FILTER_CONCRETE_TYPE_VALUE,\n Query,\n} from '@sage-bionetworks/synapse-types'\nimport React from 'react'\n\ninterface DatasetJsonLdScriptOption1Props {\n entityId?: string\n version?: number\n searchParams?: never\n}\ninterface DatasetJsonLdScriptOption2Props {\n entityId?: never\n version?: never\n searchParams?: { [key: string]: string } // can be injected if this component is embedded in a Dataset Details page\n}\nexport type DatasetJsonLdScriptProps =\n | DatasetJsonLdScriptOption1Props\n | DatasetJsonLdScriptOption2Props\n\n/**\n * This component will add a Dataset json ld script tag to the page when rendered.\n */\nexport function DatasetJsonLdScript({\n entityId: entityIdFromProps,\n version: versionFromProps,\n searchParams,\n}: DatasetJsonLdScriptProps): React.ReactNode {\n let entityId: string\n let version: number | undefined\n if (entityIdFromProps) {\n entityId = entityIdFromProps\n version = versionFromProps\n } else if (searchParams) {\n entityId = searchParams['id']\n if (searchParams['version']) {\n version = parseInt(searchParams['version'])\n }\n }\n const query: Query = {\n sql: 'select croissant_file_s3_object from syn65903895',\n additionalFilters: [\n {\n concreteType: COLUMN_SINGLE_VALUE_QUERY_FILTER_CONCRETE_TYPE_VALUE,\n columnName: 'dataset',\n operator: ColumnSingleValueFilterOperator.EQUAL,\n values: [entityId!],\n },\n ],\n }\n if (version) {\n query.additionalFilters!.push({\n concreteType: COLUMN_SINGLE_VALUE_QUERY_FILTER_CONCRETE_TYPE_VALUE,\n columnName: 'dataset_version',\n operator: ColumnSingleValueFilterOperator.EQUAL,\n values: [`${version}`],\n })\n }\n const { data } = useGetQueryResultBundleWithAsyncStatus({\n entityId: entityId!,\n query,\n partMask: BUNDLE_MASK_QUERY_RESULTS,\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n })\n\n // get raw data. parse and then inject? or just inject without parsing?\n const rows = data?.responseBody?.queryResult?.queryResults?.rows\n const row = rows && rows.length > 0 ? rows[0] : undefined\n const croissantFileS3ObjectURL = row?.values[0]\n\n const { data: croissantFileContent } = useFileContent(\n croissantFileS3ObjectURL!,\n {\n enabled: !!croissantFileS3ObjectURL,\n },\n )\n useJsonLdScriptElement(croissantFileContent)\n return <></>\n}\n"],"mappings":";;;;;;;;;AA8BA,SAAgB,EAAoB,EAClC,UAAU,GACV,SAAS,GACT,mBAC4C;CAC5C,IAAI,GACA;AACJ,CAAI,KACF,IAAW,GACX,IAAU,KACD,MACT,IAAW,EAAa,IACpB,EAAa,YACf,IAAU,SAAS,EAAa,QAAW;CAG/C,IAAM,IAAe;EACnB,KAAK;EACL,mBAAmB,CACjB;GACE,cAAc;GACd,YAAY;GACZ,UAAU,EAAgC;GAC1C,QAAQ,CAAC,EAAU;GACpB,CACF;EACF;AACD,CAAI,KACF,EAAM,kBAAmB,KAAK;EAC5B,cAAc;EACd,YAAY;EACZ,UAAU,EAAgC;EAC1C,QAAQ,CAAC,GAAG,IAAU;EACvB,CAAC;CAEJ,IAAM,EAAE,YAAS,EAAuC;EAC5C;EACV;EACA,UAAA;EACA,cAAc;EACf,CAAC,EAGI,IAAO,GAAM,cAAc,aAAa,cAAc,MAEtD,KADM,KAAQ,EAAK,SAAS,IAAI,EAAK,KAAK,KAAA,IACV,OAAO,IAEvC,EAAE,MAAM,MAAyB,EACrC,GACA,EACE,SAAS,CAAC,CAAC,GACZ,CACF;AAED,QADA,EAAuB,EAAqB,EACrC,kBAAA,GAAA,EAAK,CAAA"}
1
+ {"version":3,"file":"DatasetJsonLdScript.js","names":[],"sources":["../../src/components/DatasetJsonLdScript.tsx"],"sourcesContent":["import {\n useFileContent,\n useGetQueryResultBundleWithAsyncStatus,\n} from '@/synapse-queries'\nimport useJsonLdScriptElement from '@/utils/hooks/useJsonLdScriptElement'\nimport { BUNDLE_MASK_QUERY_RESULTS } from '@/utils/SynapseConstants'\nimport {\n ColumnSingleValueFilterOperator,\n COLUMN_SINGLE_VALUE_QUERY_FILTER_CONCRETE_TYPE_VALUE,\n Query,\n} from '@sage-bionetworks/synapse-types'\nimport React from 'react'\n\ninterface DatasetJsonLdScriptOption1Props {\n entityId?: string\n version?: number\n searchParams?: never\n}\ninterface DatasetJsonLdScriptOption2Props {\n entityId?: never\n version?: never\n searchParams?: { [key: string]: string } // can be injected if this component is embedded in a Dataset Details page\n}\nexport type DatasetJsonLdScriptProps =\n | DatasetJsonLdScriptOption1Props\n | DatasetJsonLdScriptOption2Props\n\n/**\n * This component will add a Dataset json ld script tag to the page when rendered.\n */\nexport function DatasetJsonLdScript({\n entityId: entityIdFromProps,\n version: versionFromProps,\n searchParams,\n}: DatasetJsonLdScriptProps): React.ReactNode {\n let entityId: string\n let version: number | undefined\n if (entityIdFromProps) {\n entityId = entityIdFromProps\n version = versionFromProps\n } else if (searchParams) {\n entityId = searchParams['id']\n if (searchParams['version']) {\n version = parseInt(searchParams['version'])\n }\n }\n const query: Query = {\n sql: 'select croissant_file_s3_object from syn65903895',\n additionalFilters: [\n {\n concreteType: COLUMN_SINGLE_VALUE_QUERY_FILTER_CONCRETE_TYPE_VALUE,\n columnName: 'dataset',\n operator: ColumnSingleValueFilterOperator.EQUAL,\n values: [entityId!],\n },\n ],\n }\n if (version) {\n query.additionalFilters!.push({\n concreteType: COLUMN_SINGLE_VALUE_QUERY_FILTER_CONCRETE_TYPE_VALUE,\n columnName: 'dataset_version',\n operator: ColumnSingleValueFilterOperator.EQUAL,\n values: [`${version}`],\n })\n }\n const { data } = useGetQueryResultBundleWithAsyncStatus({\n entityId: entityId!,\n query,\n partMask: BUNDLE_MASK_QUERY_RESULTS,\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n })\n\n // get raw data. parse and then inject? or just inject without parsing?\n const rows = data?.responseBody?.queryResult?.queryResults?.rows\n const row = rows && rows.length > 0 ? rows[0] : undefined\n const croissantFileS3ObjectURL = row?.values[0]\n\n const { data: croissantFileContent } = useFileContent(\n croissantFileS3ObjectURL!,\n {\n enabled: !!croissantFileS3ObjectURL,\n },\n )\n useJsonLdScriptElement(croissantFileContent)\n return <></>\n}\n"],"mappings":";;;;;;;;;AA8BA,SAAgB,EAAoB,EAClC,UAAU,GACV,SAAS,GACT,mBAC4C;CAC5C,IAAI,GACA;CACJ,AAAI,KACF,IAAW,GACX,IAAU,KACD,MACT,IAAW,EAAa,IACpB,EAAa,YACf,IAAU,SAAS,EAAa,OAAU;CAG9C,IAAM,IAAe;EACnB,KAAK;EACL,mBAAmB,CACjB;GACE,cAAc;GACd,YAAY;GACZ,UAAU,EAAgC;GAC1C,QAAQ,CAAC,CAAS;EACpB,CACF;CACF;CACA,AAAI,KACF,EAAM,kBAAmB,KAAK;EAC5B,cAAc;EACd,YAAY;EACZ,UAAU,EAAgC;EAC1C,QAAQ,CAAC,GAAG,GAAS;CACvB,CAAC;CAEH,IAAM,EAAE,YAAS,EAAuC;EAC5C;EACV;EACA,UAAA;EACA,cAAc;CAChB,CAAC,GAGK,IAAO,GAAM,cAAc,aAAa,cAAc,MAEtD,KADM,KAAQ,EAAK,SAAS,IAAI,EAAK,KAAK,KAAA,IACV,OAAO,IAEvC,EAAE,MAAM,MAAyB,EACrC,GACA,EACE,SAAS,CAAC,CAAC,EACb,CACF;CAEA,OADA,EAAuB,CAAoB,GACpC,kBAAA,GAAA,CAAI,CAAA;AACb"}
@@ -1 +1 @@
1
- {"version":3,"file":"DateTimePicker.js","names":[],"sources":["../../../src/components/DateTimePicker/DateTimePicker.tsx"],"sourcesContent":["import { useSynapseContext } from '@/utils'\nimport { Box, InputBaseProps, TextField, TextFieldProps } from '@mui/material'\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'\nimport {\n DateTimePicker as MuiDateTimePicker,\n DateTimePickerProps as MuiDateTimePickerProps,\n} from '@mui/x-date-pickers/DateTimePicker'\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'\nimport dayjs from 'dayjs'\nimport advancedFormat from 'dayjs/plugin/advancedFormat'\nimport timezone from 'dayjs/plugin/timezone'\nimport utc from 'dayjs/plugin/utc'\nimport { useMemo } from 'react'\n\ndayjs.extend(utc)\ndayjs.extend(timezone)\ndayjs.extend(advancedFormat)\n\nfunction TextFieldWithTzShown(props: TextFieldProps) {\n const { utcTime } = useSynapseContext()\n const tzDisplay = utcTime ? 'UTC' : dayjs().tz(dayjs.tz.guess()).format('z')\n\n return (\n <TextField\n {...props}\n slotProps={{\n input: {\n ...props.slotProps?.input,\n endAdornment: (\n <>\n <Box\n sx={{\n ml: 0.5,\n }}\n >\n {tzDisplay}\n </Box>\n {\n (props.slotProps?.input as InputBaseProps | undefined)\n ?.endAdornment\n }\n </>\n ),\n },\n }}\n />\n )\n}\n\nexport default function DateTimePicker(props: MuiDateTimePickerProps) {\n const { value, slots, ...rest } = props\n const { utcTime } = useSynapseContext()\n\n const valueAsDayjs = useMemo(() => {\n if (value == null) {\n return value\n }\n if (utcTime) {\n return dayjs.utc(value)\n } else {\n return dayjs(value)\n }\n }, [utcTime, value])\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <MuiDateTimePicker\n enableAccessibleFieldDOMStructure={false}\n value={valueAsDayjs}\n slots={{\n ...slots,\n textField: TextFieldWithTzShown,\n }}\n {...rest}\n />\n </LocalizationProvider>\n )\n}\n"],"mappings":";;;;;;;;;;;;AAcA,EAAM,OAAO,EAAI,EACjB,EAAM,OAAO,EAAS,EACtB,EAAM,OAAO,EAAe;AAE5B,SAAS,EAAqB,GAAuB;CACnD,IAAM,EAAE,eAAY,GAAmB,EACjC,IAAY,IAAU,QAAQ,GAAO,CAAC,GAAG,EAAM,GAAG,OAAO,CAAC,CAAC,OAAO,IAAI;AAE5E,QACE,kBAAC,GAAD;EACE,GAAI;EACJ,WAAW,EACT,OAAO;GACL,GAAG,EAAM,WAAW;GACpB,cACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;IACE,IAAI,EACF,IAAI,IACL;cAEA;IACG,CAAA,EAEH,EAAM,WAAW,OACd,aAEL,EAAA,CAAA;GAEN,EACF;EACD,CAAA;;AAIN,SAAwB,EAAe,GAA+B;CACpE,IAAM,EAAE,UAAO,UAAO,GAAG,MAAS,GAC5B,EAAE,eAAY,GAAmB;AAavC,QACE,kBAAC,GAAD;EAAsB,aAAa;YACjC,kBAAC,GAAD;GACE,mCAAmC;GACnC,OAfe,QACf,KAAS,OACJ,IAEL,IACK,EAAM,IAAI,EAAM,GAEhB,EAAM,EAAM,EAEpB,CAAC,GAAS,EAAM,CAMN;GACP,OAAO;IACL,GAAG;IACH,WAAW;IACZ;GACD,GAAI;GACJ,CAAA;EACmB,CAAA"}
1
+ {"version":3,"file":"DateTimePicker.js","names":[],"sources":["../../../src/components/DateTimePicker/DateTimePicker.tsx"],"sourcesContent":["import { useSynapseContext } from '@/utils'\nimport { Box, InputBaseProps, TextField, TextFieldProps } from '@mui/material'\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'\nimport {\n DateTimePicker as MuiDateTimePicker,\n DateTimePickerProps as MuiDateTimePickerProps,\n} from '@mui/x-date-pickers/DateTimePicker'\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'\nimport dayjs from 'dayjs'\nimport advancedFormat from 'dayjs/plugin/advancedFormat'\nimport timezone from 'dayjs/plugin/timezone'\nimport utc from 'dayjs/plugin/utc'\nimport { useMemo } from 'react'\n\ndayjs.extend(utc)\ndayjs.extend(timezone)\ndayjs.extend(advancedFormat)\n\nfunction TextFieldWithTzShown(props: TextFieldProps) {\n const { utcTime } = useSynapseContext()\n const tzDisplay = utcTime ? 'UTC' : dayjs().tz(dayjs.tz.guess()).format('z')\n\n return (\n <TextField\n {...props}\n slotProps={{\n input: {\n ...props.slotProps?.input,\n endAdornment: (\n <>\n <Box\n sx={{\n ml: 0.5,\n }}\n >\n {tzDisplay}\n </Box>\n {\n (props.slotProps?.input as InputBaseProps | undefined)\n ?.endAdornment\n }\n </>\n ),\n },\n }}\n />\n )\n}\n\nexport default function DateTimePicker(props: MuiDateTimePickerProps) {\n const { value, slots, ...rest } = props\n const { utcTime } = useSynapseContext()\n\n const valueAsDayjs = useMemo(() => {\n if (value == null) {\n return value\n }\n if (utcTime) {\n return dayjs.utc(value)\n } else {\n return dayjs(value)\n }\n }, [utcTime, value])\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <MuiDateTimePicker\n enableAccessibleFieldDOMStructure={false}\n value={valueAsDayjs}\n slots={{\n ...slots,\n textField: TextFieldWithTzShown,\n }}\n {...rest}\n />\n </LocalizationProvider>\n )\n}\n"],"mappings":";;;;;;;;;;;;AAcA,EAAM,OAAO,CAAG,GAChB,EAAM,OAAO,CAAQ,GACrB,EAAM,OAAO,CAAc;AAE3B,SAAS,EAAqB,GAAuB;CACnD,IAAM,EAAE,eAAY,EAAkB,GAChC,IAAY,IAAU,QAAQ,EAAM,EAAE,GAAG,EAAM,GAAG,MAAM,CAAC,EAAE,OAAO,GAAG;CAE3E,OACE,kBAAC,GAAD;EACE,GAAI;EACJ,WAAW,EACT,OAAO;GACL,GAAG,EAAM,WAAW;GACpB,cACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;IACE,IAAI,EACF,IAAI,GACN;cAEC;GACE,CAAA,GAEF,EAAM,WAAW,OACd,YAEN,EAAA,CAAA;EAEN,EACF;CACD,CAAA;AAEL;AAEA,SAAwB,EAAe,GAA+B;CACpE,IAAM,EAAE,UAAO,UAAO,GAAG,MAAS,GAC5B,EAAE,eAAY,EAAkB;CAatC,OACE,kBAAC,GAAD;EAAsB,aAAa;YACjC,kBAAC,GAAD;GACE,mCAAmC;GACnC,OAfe,QACf,KAAS,OACJ,IAEL,IACK,EAAM,IAAI,CAAK,IAEf,EAAM,CAAK,GAEnB,CAAC,GAAS,CAAK,CAML;GACP,OAAO;IACL,GAAG;IACH,WAAW;GACb;GACA,GAAI;EACL,CAAA;CACmB,CAAA;AAE1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConfirmCloseWithoutSavingDialog.js","names":[],"sources":["../../../src/components/Dialog/ConfirmCloseWithoutSavingDialog.tsx"],"sourcesContent":["import { SetOptional } from 'type-fest'\nimport {\n ConfirmationDialog,\n ConfirmationDialogProps,\n} from '../ConfirmationDialog/ConfirmationDialog'\n\nexport type ConfirmCloseWithoutSavingDialogProps = SetOptional<\n ConfirmationDialogProps,\n 'title' | 'content' | 'confirmButtonProps'\n>\n\nfunction ConfirmCloseWithoutSavingDialog(\n props: ConfirmCloseWithoutSavingDialogProps,\n) {\n const {\n title = 'Close without saving?',\n content = 'Are you sure you want to close the editor without saving your changes?',\n confirmButtonProps = {\n children: 'Close without saving',\n color: 'error',\n },\n ...rest\n } = props\n return (\n <ConfirmationDialog\n title={title}\n content={content}\n confirmButtonProps={confirmButtonProps}\n {...rest}\n />\n )\n}\n\nexport default ConfirmCloseWithoutSavingDialog\n"],"mappings":";;;AAWA,SAAS,EACP,GACA;CACA,IAAM,EACJ,WAAQ,yBACR,aAAU,0EACV,wBAAqB;EACnB,UAAU;EACV,OAAO;EACR,EACD,GAAG,MACD;AACJ,QACE,kBAAC,GAAD;EACS;EACE;EACW;EACpB,GAAI;EACJ,CAAA"}
1
+ {"version":3,"file":"ConfirmCloseWithoutSavingDialog.js","names":[],"sources":["../../../src/components/Dialog/ConfirmCloseWithoutSavingDialog.tsx"],"sourcesContent":["import { SetOptional } from 'type-fest'\nimport {\n ConfirmationDialog,\n ConfirmationDialogProps,\n} from '../ConfirmationDialog/ConfirmationDialog'\n\nexport type ConfirmCloseWithoutSavingDialogProps = SetOptional<\n ConfirmationDialogProps,\n 'title' | 'content' | 'confirmButtonProps'\n>\n\nfunction ConfirmCloseWithoutSavingDialog(\n props: ConfirmCloseWithoutSavingDialogProps,\n) {\n const {\n title = 'Close without saving?',\n content = 'Are you sure you want to close the editor without saving your changes?',\n confirmButtonProps = {\n children: 'Close without saving',\n color: 'error',\n },\n ...rest\n } = props\n return (\n <ConfirmationDialog\n title={title}\n content={content}\n confirmButtonProps={confirmButtonProps}\n {...rest}\n />\n )\n}\n\nexport default ConfirmCloseWithoutSavingDialog\n"],"mappings":";;;AAWA,SAAS,EACP,GACA;CACA,IAAM,EACJ,WAAQ,yBACR,aAAU,0EACV,wBAAqB;EACnB,UAAU;EACV,OAAO;CACT,GACA,GAAG,MACD;CACJ,OACE,kBAAC,GAAD;EACS;EACE;EACW;EACpB,GAAI;CACL,CAAA;AAEL"}
@@ -1 +1 @@
1
- {"version":3,"file":"DialogBase.js","names":[],"sources":["../../src/components/DialogBase.tsx"],"sourcesContent":["import { spreadSx } from '@/theme/spreadSx'\nimport CloseIcon from '@mui/icons-material/Close'\nimport {\n Box,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentProps,\n DialogProps,\n DialogTitle,\n IconButton,\n Stack,\n SxProps,\n} from '@mui/material'\nimport React, { ReactNode } from 'react'\nimport { HelpPopover, HelpPopoverProps } from './HelpPopover/HelpPopover'\n\nconst EMPTY_OBJECT = {}\n\nexport type CloseButtonProps = {\n sx?: SxProps\n onClick?: () => void\n}\n\nexport const CLOSE_BUTTON_LABEL = 'close'\nconst DEFAULT_CLOSEBUTTON_SX: SxProps = { color: 'grey.700' }\n\nexport function CloseButton({\n sx = DEFAULT_CLOSEBUTTON_SX,\n onClick,\n}: CloseButtonProps): React.JSX.Element {\n return (\n <IconButton sx={sx} onClick={onClick} aria-label={CLOSE_BUTTON_LABEL}>\n <CloseIcon />\n </IconButton>\n )\n}\n\nexport type DialogBaseTitleProps = {\n title: ReactNode\n titleHelpPopoverProps?: HelpPopoverProps\n hasCloseButton?: boolean\n onCancel: () => void\n}\n\nexport function DialogBaseTitle(props: DialogBaseTitleProps): React.ReactNode {\n const {\n title,\n titleHelpPopoverProps,\n hasCloseButton = true,\n onCancel,\n } = props\n return (\n <DialogTitle>\n <Stack\n direction=\"row\"\n sx={{\n alignItems: 'center',\n gap: '5px',\n }}\n >\n {title}\n <Box\n component={'span'}\n sx={{\n fontSize: '14px',\n }}\n >\n {titleHelpPopoverProps && <HelpPopover {...titleHelpPopoverProps} />}\n </Box>\n <Box sx={{ flexGrow: 1 }} />\n {hasCloseButton && <CloseButton onClick={() => onCancel()} />}\n </Stack>\n </DialogTitle>\n )\n}\n\nexport type DialogBaseProps = DialogBaseTitleProps & {\n open: boolean\n content: ReactNode\n actions?: ReactNode\n className?: string\n onCancel: () => void\n maxWidth?: DialogProps['maxWidth']\n fullWidth?: boolean\n sx?: DialogProps['sx']\n contentProps?: DialogContentProps\n DialogProps?: Partial<DialogProps>\n /** If true, reduces the vertical padding of the title, content, and actions for a more compact layout. */\n dense?: boolean\n}\n\n/**\n * A dialog built using MUI components.\n */\nexport const DialogBase = ({\n open,\n title,\n content,\n actions,\n className,\n onCancel,\n hasCloseButton,\n titleHelpPopoverProps,\n maxWidth = 'sm',\n fullWidth = true,\n sx,\n contentProps = EMPTY_OBJECT,\n DialogProps,\n dense = false,\n}: DialogBaseProps): React.ReactNode => {\n return (\n <Dialog\n fullWidth={fullWidth}\n maxWidth={maxWidth}\n open={open}\n className={className}\n onClose={() => onCancel()}\n sx={spreadSx(\n sx,\n dense\n ? {\n '.MuiDialog-container > .MuiPaper-root': {\n padding: '10px 30px',\n },\n '& .MuiDialogTitle-root': {\n py: 1.5,\n typography: 'headline3',\n },\n '& .MuiDialogContent-root': {\n pt: 1,\n },\n '& .MuiDialogActions-root': {\n pb: 2,\n },\n }\n : undefined,\n theme => ({\n [theme.breakpoints.down('sm')]: {\n width: '100vw',\n '.MuiDialog-container > .MuiPaper-root': {\n padding: '33px',\n margin: 0,\n width: '100%',\n height: '100%',\n maxHeight: 'unset',\n },\n },\n }),\n )}\n {...DialogProps}\n >\n <DialogBaseTitle\n title={title}\n titleHelpPopoverProps={titleHelpPopoverProps}\n hasCloseButton={hasCloseButton}\n onCancel={onCancel}\n />\n <DialogContent {...contentProps}>{content}</DialogContent>\n {actions && <DialogActions>{actions}</DialogActions>}\n </Dialog>\n )\n}\n"],"mappings":";;;;;;;AAiBA,IAAM,IAAe,EAAE,EAOV,IAAqB,SAC5B,IAAkC,EAAE,OAAO,YAAY;AAE7D,SAAgB,EAAY,EAC1B,QAAK,GACL,cACsC;AACtC,QACE,kBAAC,GAAD;EAAgB;EAAa;EAAS,cAAY;YAChD,kBAAC,GAAD,EAAa,CAAA;EACF,CAAA;;AAWjB,SAAgB,EAAgB,GAA8C;CAC5E,IAAM,EACJ,UACA,0BACA,oBAAiB,IACjB,gBACE;AACJ,QACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;EACE,WAAU;EACV,IAAI;GACF,YAAY;GACZ,KAAK;GACN;YALH;GAOG;GACD,kBAAC,GAAD;IACE,WAAW;IACX,IAAI,EACF,UAAU,QACX;cAEA,KAAyB,kBAAC,GAAD,EAAa,GAAI,GAAyB,CAAA;IAChE,CAAA;GACN,kBAAC,GAAD,EAAK,IAAI,EAAE,UAAU,GAAG,EAAI,CAAA;GAC3B,KAAkB,kBAAC,GAAD,EAAa,eAAe,GAAU,EAAI,CAAA;GACvD;KACI,CAAA;;AAsBlB,IAAa,KAAc,EACzB,SACA,UACA,YACA,YACA,cACA,aACA,mBACA,0BACA,cAAW,MACX,eAAY,IACZ,OACA,kBAAe,GACf,gBACA,WAAQ,SAGN,kBAAC,GAAD;CACa;CACD;CACJ;CACK;CACX,eAAe,GAAU;CACzB,IAAI,EACF,GACA,IACI;EACE,yCAAyC,EACvC,SAAS,aACV;EACD,0BAA0B;GACxB,IAAI;GACJ,YAAY;GACb;EACD,4BAA4B,EAC1B,IAAI,GACL;EACD,4BAA4B,EAC1B,IAAI,GACL;EACF,GACD,KAAA,IACJ,OAAU,GACP,EAAM,YAAY,KAAK,KAAK,GAAG;EAC9B,OAAO;EACP,yCAAyC;GACvC,SAAS;GACT,QAAQ;GACR,OAAO;GACP,QAAQ;GACR,WAAW;GACZ;EACF,EACF,EACF;CACD,GAAI;WAtCN;EAwCE,kBAAC,GAAD;GACS;GACgB;GACP;GACN;GACV,CAAA;EACF,kBAAC,GAAD;GAAe,GAAI;aAAe;GAAwB,CAAA;EACzD,KAAW,kBAAC,GAAD,EAAA,UAAgB,GAAwB,CAAA;EAC7C"}
1
+ {"version":3,"file":"DialogBase.js","names":[],"sources":["../../src/components/DialogBase.tsx"],"sourcesContent":["import { spreadSx } from '@/theme/spreadSx'\nimport CloseIcon from '@mui/icons-material/Close'\nimport {\n Box,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentProps,\n DialogProps,\n DialogTitle,\n IconButton,\n Stack,\n SxProps,\n} from '@mui/material'\nimport React, { ReactNode } from 'react'\nimport { HelpPopover, HelpPopoverProps } from './HelpPopover/HelpPopover'\n\nconst EMPTY_OBJECT = {}\n\nexport type CloseButtonProps = {\n sx?: SxProps\n onClick?: () => void\n}\n\nexport const CLOSE_BUTTON_LABEL = 'close'\nconst DEFAULT_CLOSEBUTTON_SX: SxProps = { color: 'grey.700' }\n\nexport function CloseButton({\n sx = DEFAULT_CLOSEBUTTON_SX,\n onClick,\n}: CloseButtonProps): React.JSX.Element {\n return (\n <IconButton sx={sx} onClick={onClick} aria-label={CLOSE_BUTTON_LABEL}>\n <CloseIcon />\n </IconButton>\n )\n}\n\nexport type DialogBaseTitleProps = {\n title: ReactNode\n titleHelpPopoverProps?: HelpPopoverProps\n hasCloseButton?: boolean\n onCancel: () => void\n}\n\nexport function DialogBaseTitle(props: DialogBaseTitleProps): React.ReactNode {\n const {\n title,\n titleHelpPopoverProps,\n hasCloseButton = true,\n onCancel,\n } = props\n return (\n <DialogTitle>\n <Stack\n direction=\"row\"\n sx={{\n alignItems: 'center',\n gap: '5px',\n }}\n >\n {title}\n <Box\n component={'span'}\n sx={{\n fontSize: '14px',\n }}\n >\n {titleHelpPopoverProps && <HelpPopover {...titleHelpPopoverProps} />}\n </Box>\n <Box sx={{ flexGrow: 1 }} />\n {hasCloseButton && <CloseButton onClick={() => onCancel()} />}\n </Stack>\n </DialogTitle>\n )\n}\n\nexport type DialogBaseProps = DialogBaseTitleProps & {\n open: boolean\n content: ReactNode\n actions?: ReactNode\n className?: string\n onCancel: () => void\n maxWidth?: DialogProps['maxWidth']\n fullWidth?: boolean\n sx?: DialogProps['sx']\n contentProps?: DialogContentProps\n DialogProps?: Partial<DialogProps>\n /** If true, reduces the vertical padding of the title, content, and actions for a more compact layout. */\n dense?: boolean\n}\n\n/**\n * A dialog built using MUI components.\n */\nexport const DialogBase = ({\n open,\n title,\n content,\n actions,\n className,\n onCancel,\n hasCloseButton,\n titleHelpPopoverProps,\n maxWidth = 'sm',\n fullWidth = true,\n sx,\n contentProps = EMPTY_OBJECT,\n DialogProps,\n dense = false,\n}: DialogBaseProps): React.ReactNode => {\n return (\n <Dialog\n fullWidth={fullWidth}\n maxWidth={maxWidth}\n open={open}\n className={className}\n onClose={() => onCancel()}\n sx={spreadSx(\n sx,\n dense\n ? {\n '.MuiDialog-container > .MuiPaper-root': {\n padding: '10px 30px',\n },\n '& .MuiDialogTitle-root': {\n py: 1.5,\n typography: 'headline3',\n },\n '& .MuiDialogContent-root': {\n pt: 1,\n },\n '& .MuiDialogActions-root': {\n pb: 2,\n },\n }\n : undefined,\n theme => ({\n [theme.breakpoints.down('sm')]: {\n width: '100vw',\n '.MuiDialog-container > .MuiPaper-root': {\n padding: '33px',\n margin: 0,\n width: '100%',\n height: '100%',\n maxHeight: 'unset',\n },\n },\n }),\n )}\n {...DialogProps}\n >\n <DialogBaseTitle\n title={title}\n titleHelpPopoverProps={titleHelpPopoverProps}\n hasCloseButton={hasCloseButton}\n onCancel={onCancel}\n />\n <DialogContent {...contentProps}>{content}</DialogContent>\n {actions && <DialogActions>{actions}</DialogActions>}\n </Dialog>\n )\n}\n"],"mappings":";;;;;;;AAiBA,IAAM,IAAe,CAAC,GAOT,IAAqB,SAC5B,IAAkC,EAAE,OAAO,WAAW;AAE5D,SAAgB,EAAY,EAC1B,QAAK,GACL,cACsC;CACtC,OACE,kBAAC,GAAD;EAAgB;EAAa;EAAS,cAAY;YAChD,kBAAC,GAAD,CAAY,CAAA;CACF,CAAA;AAEhB;AASA,SAAgB,EAAgB,GAA8C;CAC5E,IAAM,EACJ,UACA,0BACA,oBAAiB,IACjB,gBACE;CACJ,OACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;EACE,WAAU;EACV,IAAI;GACF,YAAY;GACZ,KAAK;EACP;YALF;GAOG;GACD,kBAAC,GAAD;IACE,WAAW;IACX,IAAI,EACF,UAAU,OACZ;cAEC,KAAyB,kBAAC,GAAD,EAAa,GAAI,EAAwB,CAAA;GAChE,CAAA;GACL,kBAAC,GAAD,EAAK,IAAI,EAAE,UAAU,EAAE,EAAI,CAAA;GAC1B,KAAkB,kBAAC,GAAD,EAAa,eAAe,EAAS,EAAI,CAAA;EACvD;IACI,CAAA;AAEjB;AAoBA,IAAa,KAAc,EACzB,SACA,UACA,YACA,YACA,cACA,aACA,mBACA,0BACA,cAAW,MACX,eAAY,IACZ,OACA,kBAAe,GACf,gBACA,WAAQ,SAGN,kBAAC,GAAD;CACa;CACD;CACJ;CACK;CACX,eAAe,EAAS;CACxB,IAAI,EACF,GACA,IACI;EACE,yCAAyC,EACvC,SAAS,YACX;EACA,0BAA0B;GACxB,IAAI;GACJ,YAAY;EACd;EACA,4BAA4B,EAC1B,IAAI,EACN;EACA,4BAA4B,EAC1B,IAAI,EACN;CACF,IACA,KAAA,IACJ,OAAU,GACP,EAAM,YAAY,KAAK,IAAI,IAAI;EAC9B,OAAO;EACP,yCAAyC;GACvC,SAAS;GACT,QAAQ;GACR,OAAO;GACP,QAAQ;GACR,WAAW;EACb;CACF,EACF,EACF;CACA,GAAI;WAtCN;EAwCE,kBAAC,GAAD;GACS;GACgB;GACP;GACN;EACX,CAAA;EACD,kBAAC,GAAD;GAAe,GAAI;aAAe;EAAuB,CAAA;EACxD,KAAW,kBAAC,GAAD,EAAA,UAAgB,EAAuB,CAAA;CAC7C"}
@@ -1 +1 @@
1
- {"version":3,"file":"DirectDownload.js","names":[],"sources":["../../../src/components/DirectDownload/DirectDownload.tsx"],"sourcesContent":["import { useGetFileBatch } from '@/synapse-queries/file/useFiles'\nimport { implementsExternalFileHandleInterface } from '@/utils/types/IsType'\nimport { Tooltip } from '@mui/material'\nimport {\n ExternalFileHandle,\n FileHandleAssociateType,\n} from '@sage-bionetworks/synapse-types'\nimport { forwardRef } from 'react'\nimport IconSvg, { IconSvgProps } from '../IconSvg/IconSvg'\nimport { TOOLTIP_DELAY_SHOW } from '../SynapseTable/SynapseTableConstants'\nimport { useDirectDownloadHandler } from '@/utils/hooks/useDirectDownloadHandler'\n\nexport type DirectFileDownloadProps = {\n associatedObjectId: string\n associatedObjectType: FileHandleAssociateType\n fileHandleId: string\n displayFileName?: boolean\n onClickCallback?: (isExternalLink: boolean) => void // callback if you want to know when the link was clicked\n stopPropagation?: boolean\n iconSvgPropOverrides?: Partial<IconSvgProps>\n}\n\ntype DirectDownloadIconProps = {\n isExternalFile?: boolean\n hasFileAccess: boolean\n onClick?: (isExternalFile: boolean) => void\n getDownloadLink: () => Promise<void>\n stopPropagation: boolean\n externalURL?: string\n displayFileName: boolean\n fileName?: string\n iconSvgPropOverrides?: Partial<IconSvgProps>\n}\n\nconst DirectDownloadIcon = forwardRef<\n HTMLButtonElement,\n DirectDownloadIconProps\n>(function DirectDownloadIcon(props: DirectDownloadIconProps, ref) {\n const {\n isExternalFile,\n onClick,\n getDownloadLink,\n stopPropagation,\n externalURL,\n hasFileAccess,\n displayFileName,\n fileName,\n iconSvgPropOverrides = {},\n } = props\n if (isExternalFile) {\n return (\n <button\n ref={ref}\n className={'btn-download-icon'}\n onClick={event => {\n if (onClick) {\n onClick(isExternalFile)\n if (stopPropagation) event.stopPropagation()\n }\n }}\n >\n <a\n className=\"ignoreLink\"\n rel=\"noopener noreferrer\"\n href={externalURL}\n target=\"_blank\"\n >\n <IconSvg icon=\"download\" {...iconSvgPropOverrides} />\n </a>\n </button>\n )\n }\n if (hasFileAccess) {\n return (\n <button\n ref={ref}\n className={'btn-download-icon'}\n onClick={event => {\n getDownloadLink()\n if (stopPropagation) event.stopPropagation()\n }}\n >\n <IconSvg icon=\"download\" {...iconSvgPropOverrides} />\n {displayFileName && fileName ? fileName : ''}\n </button>\n )\n }\n return <></>\n})\n\nfunction DirectDownload(props: DirectFileDownloadProps) {\n const {\n associatedObjectId,\n associatedObjectType,\n fileHandleId,\n displayFileName = false,\n onClickCallback,\n stopPropagation = false,\n iconSvgPropOverrides,\n } = props\n\n const fileHandleAssociation = {\n fileHandleId: fileHandleId,\n associateObjectId: associatedObjectId,\n associateObjectType: associatedObjectType,\n }\n\n // Get file handle data to ensure we have access / display information\n const { data } = useGetFileBatch({\n requestedFiles: [fileHandleAssociation],\n includeFileHandles: true,\n // don't get the presigned URL with this query, it may expire before the user clicks the download button\n includePreSignedURLs: false,\n includePreviewPreSignedURLs: false,\n })\n\n const fileHandle = data?.requestedFiles[0]?.fileHandle\n const hasFileAccess = Boolean(fileHandle)\n const fileName = fileHandle?.fileName\n const isExternalFile = fileHandle\n ? implementsExternalFileHandleInterface(fileHandle)\n : undefined\n const externalURL: string | undefined = fileHandle\n ? (fileHandle as ExternalFileHandle).externalURL\n : undefined\n\n const { downloadFile } = useDirectDownloadHandler()\n\n const getDownloadLink = async () => {\n await downloadFile({\n fileHandleId,\n associatedObjectId,\n associatedObjectType,\n })\n\n if (onClickCallback) {\n onClickCallback(isExternalFile!)\n }\n }\n\n return (\n <Tooltip\n title=\"Click to begin download of this file\"\n enterNextDelay={TOOLTIP_DELAY_SHOW}\n placement=\"left\"\n >\n <span>\n <DirectDownloadIcon\n isExternalFile={isExternalFile}\n hasFileAccess={hasFileAccess}\n onClick={onClickCallback}\n getDownloadLink={getDownloadLink}\n stopPropagation={stopPropagation}\n externalURL={externalURL}\n displayFileName={displayFileName}\n fileName={fileName}\n iconSvgPropOverrides={iconSvgPropOverrides}\n />\n </span>\n </Tooltip>\n )\n}\n\nexport default DirectDownload\n"],"mappings":";;;;;;;;;AAkCA,IAAM,IAAqB,EAGzB,SAA4B,GAAgC,GAAK;CACjE,IAAM,EACJ,mBACA,YACA,oBACA,oBACA,gBACA,kBACA,oBACA,aACA,0BAAuB,EAAE,KACvB;AAuCJ,QAtCI,IAEA,kBAAC,UAAD;EACO;EACL,WAAW;EACX,UAAS,MAAS;AAChB,GAAI,MACF,EAAQ,EAAe,EACnB,KAAiB,EAAM,iBAAiB;;YAIhD,kBAAC,KAAD;GACE,WAAU;GACV,KAAI;GACJ,MAAM;GACN,QAAO;aAEP,kBAAC,GAAD;IAAS,MAAK;IAAW,GAAI;IAAwB,CAAA;GACnD,CAAA;EACG,CAAA,GAGT,IAEA,kBAAC,UAAD;EACO;EACL,WAAW;EACX,UAAS,MAAS;AAEhB,GADA,GAAiB,EACb,KAAiB,EAAM,iBAAiB;;YALhD,CAQE,kBAAC,GAAD;GAAS,MAAK;GAAW,GAAI;GAAwB,CAAA,EACpD,KAAmB,IAAW,IAAW,GACnC;MAGN,kBAAA,GAAA,EAAK,CAAA;EACZ;AAEF,SAAS,EAAe,GAAgC;CACtD,IAAM,EACJ,uBACA,yBACA,iBACA,qBAAkB,IAClB,oBACA,qBAAkB,IAClB,4BACE,GASE,EAAE,YAAS,EAAgB;EAC/B,gBAAgB,CAAC;GAPH;GACd,mBAAmB;GACnB,qBAAqB;GAKJ,CAAsB;EACvC,oBAAoB;EAEpB,sBAAsB;EACtB,6BAA6B;EAC9B,CAAC,EAEI,IAAa,GAAM,eAAe,IAAI,YACtC,IAAgB,EAAQ,GACxB,IAAW,GAAY,UACvB,IAAiB,IACnB,EAAsC,EAAW,GACjD,KAAA,GACE,IAAkC,IACnC,EAAkC,cACnC,KAAA,GAEE,EAAE,oBAAiB,GAA0B;AAcnD,QACE,kBAAC,GAAD;EACE,OAAM;EACN,gBAAA;EACA,WAAU;YAEV,kBAAC,QAAD,EAAA,UACE,kBAAC,GAAD;GACkB;GACD;GACf,SAAS;GACQ,6BAvBW;AAOlC,IANA,MAAM,EAAa;KACjB;KACA;KACA;KACD,CAAC,EAEE,KACF,EAAgB,EAAgB;;GAgBX;GACJ;GACI;GACP;GACY;GACtB,CAAA,EACG,CAAA;EACC,CAAA"}
1
+ {"version":3,"file":"DirectDownload.js","names":[],"sources":["../../../src/components/DirectDownload/DirectDownload.tsx"],"sourcesContent":["import { useGetFileBatch } from '@/synapse-queries/file/useFiles'\nimport { implementsExternalFileHandleInterface } from '@/utils/types/IsType'\nimport { Tooltip } from '@mui/material'\nimport {\n ExternalFileHandle,\n FileHandleAssociateType,\n} from '@sage-bionetworks/synapse-types'\nimport { forwardRef } from 'react'\nimport IconSvg, { IconSvgProps } from '../IconSvg/IconSvg'\nimport { TOOLTIP_DELAY_SHOW } from '../SynapseTable/SynapseTableConstants'\nimport { useDirectDownloadHandler } from '@/utils/hooks/useDirectDownloadHandler'\n\nexport type DirectFileDownloadProps = {\n associatedObjectId: string\n associatedObjectType: FileHandleAssociateType\n fileHandleId: string\n displayFileName?: boolean\n onClickCallback?: (isExternalLink: boolean) => void // callback if you want to know when the link was clicked\n stopPropagation?: boolean\n iconSvgPropOverrides?: Partial<IconSvgProps>\n}\n\ntype DirectDownloadIconProps = {\n isExternalFile?: boolean\n hasFileAccess: boolean\n onClick?: (isExternalFile: boolean) => void\n getDownloadLink: () => Promise<void>\n stopPropagation: boolean\n externalURL?: string\n displayFileName: boolean\n fileName?: string\n iconSvgPropOverrides?: Partial<IconSvgProps>\n}\n\nconst DirectDownloadIcon = forwardRef<\n HTMLButtonElement,\n DirectDownloadIconProps\n>(function DirectDownloadIcon(props: DirectDownloadIconProps, ref) {\n const {\n isExternalFile,\n onClick,\n getDownloadLink,\n stopPropagation,\n externalURL,\n hasFileAccess,\n displayFileName,\n fileName,\n iconSvgPropOverrides = {},\n } = props\n if (isExternalFile) {\n return (\n <button\n ref={ref}\n className={'btn-download-icon'}\n onClick={event => {\n if (onClick) {\n onClick(isExternalFile)\n if (stopPropagation) event.stopPropagation()\n }\n }}\n >\n <a\n className=\"ignoreLink\"\n rel=\"noopener noreferrer\"\n href={externalURL}\n target=\"_blank\"\n >\n <IconSvg icon=\"download\" {...iconSvgPropOverrides} />\n </a>\n </button>\n )\n }\n if (hasFileAccess) {\n return (\n <button\n ref={ref}\n className={'btn-download-icon'}\n onClick={event => {\n getDownloadLink()\n if (stopPropagation) event.stopPropagation()\n }}\n >\n <IconSvg icon=\"download\" {...iconSvgPropOverrides} />\n {displayFileName && fileName ? fileName : ''}\n </button>\n )\n }\n return <></>\n})\n\nfunction DirectDownload(props: DirectFileDownloadProps) {\n const {\n associatedObjectId,\n associatedObjectType,\n fileHandleId,\n displayFileName = false,\n onClickCallback,\n stopPropagation = false,\n iconSvgPropOverrides,\n } = props\n\n const fileHandleAssociation = {\n fileHandleId: fileHandleId,\n associateObjectId: associatedObjectId,\n associateObjectType: associatedObjectType,\n }\n\n // Get file handle data to ensure we have access / display information\n const { data } = useGetFileBatch({\n requestedFiles: [fileHandleAssociation],\n includeFileHandles: true,\n // don't get the presigned URL with this query, it may expire before the user clicks the download button\n includePreSignedURLs: false,\n includePreviewPreSignedURLs: false,\n })\n\n const fileHandle = data?.requestedFiles[0]?.fileHandle\n const hasFileAccess = Boolean(fileHandle)\n const fileName = fileHandle?.fileName\n const isExternalFile = fileHandle\n ? implementsExternalFileHandleInterface(fileHandle)\n : undefined\n const externalURL: string | undefined = fileHandle\n ? (fileHandle as ExternalFileHandle).externalURL\n : undefined\n\n const { downloadFile } = useDirectDownloadHandler()\n\n const getDownloadLink = async () => {\n await downloadFile({\n fileHandleId,\n associatedObjectId,\n associatedObjectType,\n })\n\n if (onClickCallback) {\n onClickCallback(isExternalFile!)\n }\n }\n\n return (\n <Tooltip\n title=\"Click to begin download of this file\"\n enterNextDelay={TOOLTIP_DELAY_SHOW}\n placement=\"left\"\n >\n <span>\n <DirectDownloadIcon\n isExternalFile={isExternalFile}\n hasFileAccess={hasFileAccess}\n onClick={onClickCallback}\n getDownloadLink={getDownloadLink}\n stopPropagation={stopPropagation}\n externalURL={externalURL}\n displayFileName={displayFileName}\n fileName={fileName}\n iconSvgPropOverrides={iconSvgPropOverrides}\n />\n </span>\n </Tooltip>\n )\n}\n\nexport default DirectDownload\n"],"mappings":";;;;;;;;;AAkCA,IAAM,IAAqB,EAGzB,SAA4B,GAAgC,GAAK;CACjE,IAAM,EACJ,mBACA,YACA,oBACA,oBACA,gBACA,kBACA,oBACA,aACA,0BAAuB,CAAC,MACtB;CAuCJ,OAtCI,IAEA,kBAAC,UAAD;EACO;EACL,WAAW;EACX,UAAS,MAAS;GAChB,AAAI,MACF,EAAQ,CAAc,GAClB,KAAiB,EAAM,gBAAgB;EAE/C;YAEA,kBAAC,KAAD;GACE,WAAU;GACV,KAAI;GACJ,MAAM;GACN,QAAO;aAEP,kBAAC,GAAD;IAAS,MAAK;IAAW,GAAI;GAAuB,CAAA;EACnD,CAAA;CACG,CAAA,IAGR,IAEA,kBAAC,UAAD;EACO;EACL,WAAW;EACX,UAAS,MAAS;GAEhB,AADA,EAAgB,GACZ,KAAiB,EAAM,gBAAgB;EAC7C;YANF,CAQE,kBAAC,GAAD;GAAS,MAAK;GAAW,GAAI;EAAuB,CAAA,GACnD,KAAmB,IAAW,IAAW,EACpC;MAGL,kBAAA,GAAA,CAAI,CAAA;AACb,CAAC;AAED,SAAS,EAAe,GAAgC;CACtD,IAAM,EACJ,uBACA,yBACA,iBACA,qBAAkB,IAClB,oBACA,qBAAkB,IAClB,4BACE,GASE,EAAE,YAAS,EAAgB;EAC/B,gBAAgB,CAAC;GAPH;GACd,mBAAmB;GACnB,qBAAqB;EAKJ,CAAqB;EACtC,oBAAoB;EAEpB,sBAAsB;EACtB,6BAA6B;CAC/B,CAAC,GAEK,IAAa,GAAM,eAAe,IAAI,YACtC,IAAgB,EAAQ,GACxB,IAAW,GAAY,UACvB,IAAiB,IACnB,EAAsC,CAAU,IAChD,KAAA,GACE,IAAkC,IACnC,EAAkC,cACnC,KAAA,GAEE,EAAE,oBAAiB,EAAyB;CAclD,OACE,kBAAC,GAAD;EACE,OAAM;EACN,gBAAA;EACA,WAAU;YAEV,kBAAC,QAAD,EAAA,UACE,kBAAC,GAAD;GACkB;GACD;GACf,SAAS;GACQ,6BAvBW;IAOlC,AANA,MAAM,EAAa;KACjB;KACA;KACA;IACF,CAAC,GAEG,KACF,EAAgB,CAAe;GAEnC;GAcyB;GACJ;GACI;GACP;GACY;EACvB,CAAA,EACG,CAAA;CACC,CAAA;AAEb"}
@@ -1 +1 @@
1
- {"version":3,"file":"FileEntityDirectDownload.js","names":[],"sources":["../../../src/components/DirectDownload/FileEntityDirectDownload.tsx"],"sourcesContent":["import { useGetEntity } from '@/synapse-queries'\nimport { isFileEntity } from '@/utils/types/IsType'\nimport { Skeleton } from '@mui/material'\nimport { FileHandleAssociateType } from '@sage-bionetworks/synapse-types'\nimport DirectDownload, { DirectFileDownloadProps } from './DirectDownload'\n\nexport type FileEntityDirectDownloadProps = Omit<\n DirectFileDownloadProps,\n 'associatedObjectId' | 'associatedObjectType' | 'fileHandleId'\n> & {\n entityId: string\n entityVersionNumber?: string | number\n}\n\nexport default function FileEntityDirectDownload(\n props: FileEntityDirectDownloadProps,\n) {\n const { entityId, entityVersionNumber } = props\n\n const { data: entity, isLoading } = useGetEntity(\n entityId,\n entityVersionNumber,\n )\n\n if (isLoading) {\n return <Skeleton />\n }\n\n if (!entity || (entity && !isFileEntity(entity))) {\n return <></>\n }\n\n return (\n <DirectDownload\n fileHandleId={entity?.dataFileHandleId}\n associatedObjectId={entityId}\n associatedObjectType={FileHandleAssociateType.FileEntity}\n {...props}\n />\n )\n}\n"],"mappings":";;;;;;;;AAcA,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,aAAU,2BAAwB,GAEpC,EAAE,MAAM,GAAQ,iBAAc,EAClC,GACA,EACD;AAUD,QARI,IACK,kBAAC,GAAD,EAAY,CAAA,GAGjB,CAAC,KAAW,KAAU,CAAC,EAAa,EAAO,GACtC,kBAAA,GAAA,EAAK,CAAA,GAIZ,kBAAC,GAAD;EACE,cAAc,GAAQ;EACtB,oBAAoB;EACpB,sBAAsB,EAAwB;EAC9C,GAAI;EACJ,CAAA"}
1
+ {"version":3,"file":"FileEntityDirectDownload.js","names":[],"sources":["../../../src/components/DirectDownload/FileEntityDirectDownload.tsx"],"sourcesContent":["import { useGetEntity } from '@/synapse-queries'\nimport { isFileEntity } from '@/utils/types/IsType'\nimport { Skeleton } from '@mui/material'\nimport { FileHandleAssociateType } from '@sage-bionetworks/synapse-types'\nimport DirectDownload, { DirectFileDownloadProps } from './DirectDownload'\n\nexport type FileEntityDirectDownloadProps = Omit<\n DirectFileDownloadProps,\n 'associatedObjectId' | 'associatedObjectType' | 'fileHandleId'\n> & {\n entityId: string\n entityVersionNumber?: string | number\n}\n\nexport default function FileEntityDirectDownload(\n props: FileEntityDirectDownloadProps,\n) {\n const { entityId, entityVersionNumber } = props\n\n const { data: entity, isLoading } = useGetEntity(\n entityId,\n entityVersionNumber,\n )\n\n if (isLoading) {\n return <Skeleton />\n }\n\n if (!entity || (entity && !isFileEntity(entity))) {\n return <></>\n }\n\n return (\n <DirectDownload\n fileHandleId={entity?.dataFileHandleId}\n associatedObjectId={entityId}\n associatedObjectType={FileHandleAssociateType.FileEntity}\n {...props}\n />\n )\n}\n"],"mappings":";;;;;;;;AAcA,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,aAAU,2BAAwB,GAEpC,EAAE,MAAM,GAAQ,iBAAc,EAClC,GACA,CACF;CAUA,OARI,IACK,kBAAC,GAAD,CAAW,CAAA,IAGhB,CAAC,KAAW,KAAU,CAAC,EAAa,CAAM,IACrC,kBAAA,GAAA,CAAI,CAAA,IAIX,kBAAC,GAAD;EACE,cAAc,GAAQ;EACtB,oBAAoB;EACpB,sBAAsB,EAAwB;EAC9C,GAAI;CACL,CAAA;AAEL"}
@@ -1 +1 @@
1
- {"version":3,"file":"DirectDownloadButton.js","names":[],"sources":["../../src/components/DirectDownloadButton.tsx"],"sourcesContent":["import { getFiles } from '@/synapse-client/SynapseClient'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { Button, ButtonProps } from '@mui/material'\nimport {\n BatchFileRequest,\n FileHandleAssociation,\n} from '@sage-bionetworks/synapse-types'\n\nexport type DirectFileDownloadButtonProps = Omit<ButtonProps, 'onClick'> & {\n fileHandleAssociation: FileHandleAssociation\n fileName: string | undefined\n}\n\nfunction DirectDownloadButton(props: DirectFileDownloadButtonProps) {\n const { fileHandleAssociation, fileName, ...buttonProps } = props\n const { accessToken, isAuthenticated } = useSynapseContext()\n\n const getDownloadLink = async () => {\n if (!fileHandleAssociation.fileHandleId || !isAuthenticated) return\n\n const batchFileRequest: BatchFileRequest = {\n requestedFiles: [fileHandleAssociation],\n includePreSignedURLs: true,\n includeFileHandles: false,\n includePreviewPreSignedURLs: false,\n }\n const file = await getFiles(batchFileRequest, accessToken)\n const preSignedURL = file.requestedFiles[0].preSignedURL\n if (!preSignedURL) {\n console.log('Fail to get file download link')\n } else {\n window.open(preSignedURL)\n }\n }\n\n return (\n <Button\n {...buttonProps}\n onClick={() => {\n getDownloadLink()\n }}\n >\n {fileName}\n </Button>\n )\n}\n\nexport default DirectDownloadButton\n"],"mappings":";;;;;AAaA,SAAS,EAAqB,GAAsC;CAClE,IAAM,EAAE,0BAAuB,aAAU,GAAG,MAAgB,GACtD,EAAE,gBAAa,uBAAoB,GAAmB,EAEtD,IAAkB,YAAY;AAClC,MAAI,CAAC,EAAsB,gBAAgB,CAAC,EAAiB;EAS7D,IAAM,KAAe,MADF,EAAS;GAL1B,gBAAgB,CAAC,EAAsB;GACvC,sBAAsB;GACtB,oBAAoB;GACpB,6BAA6B;GAEH,EAAkB,EAAY,EAChC,eAAe,GAAG;AAC5C,EAAK,IAGH,OAAO,KAAK,EAAa,GAFzB,QAAQ,IAAI,iCAAiC;;AAMjD,QACE,kBAAC,GAAD;EACE,GAAI;EACJ,eAAe;AACb,MAAiB;;YAGlB;EACM,CAAA"}
1
+ {"version":3,"file":"DirectDownloadButton.js","names":[],"sources":["../../src/components/DirectDownloadButton.tsx"],"sourcesContent":["import { getFiles } from '@/synapse-client/SynapseClient'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { Button, ButtonProps } from '@mui/material'\nimport {\n BatchFileRequest,\n FileHandleAssociation,\n} from '@sage-bionetworks/synapse-types'\n\nexport type DirectFileDownloadButtonProps = Omit<ButtonProps, 'onClick'> & {\n fileHandleAssociation: FileHandleAssociation\n fileName: string | undefined\n}\n\nfunction DirectDownloadButton(props: DirectFileDownloadButtonProps) {\n const { fileHandleAssociation, fileName, ...buttonProps } = props\n const { accessToken, isAuthenticated } = useSynapseContext()\n\n const getDownloadLink = async () => {\n if (!fileHandleAssociation.fileHandleId || !isAuthenticated) return\n\n const batchFileRequest: BatchFileRequest = {\n requestedFiles: [fileHandleAssociation],\n includePreSignedURLs: true,\n includeFileHandles: false,\n includePreviewPreSignedURLs: false,\n }\n const file = await getFiles(batchFileRequest, accessToken)\n const preSignedURL = file.requestedFiles[0].preSignedURL\n if (!preSignedURL) {\n console.log('Fail to get file download link')\n } else {\n window.open(preSignedURL)\n }\n }\n\n return (\n <Button\n {...buttonProps}\n onClick={() => {\n getDownloadLink()\n }}\n >\n {fileName}\n </Button>\n )\n}\n\nexport default DirectDownloadButton\n"],"mappings":";;;;;AAaA,SAAS,EAAqB,GAAsC;CAClE,IAAM,EAAE,0BAAuB,aAAU,GAAG,MAAgB,GACtD,EAAE,gBAAa,uBAAoB,EAAkB,GAErD,IAAkB,YAAY;EAClC,IAAI,CAAC,EAAsB,gBAAgB,CAAC,GAAiB;EAS7D,IAAM,KAAe,MADF,EAAS;GAL1B,gBAAgB,CAAC,CAAqB;GACtC,sBAAsB;GACtB,oBAAoB;GACpB,6BAA6B;EAEH,GAAkB,CAAW,GAC/B,eAAe,GAAG;EAC5C,AAAK,IAGH,OAAO,KAAK,CAAY,IAFxB,QAAQ,IAAI,gCAAgC;CAIhD;CAEA,OACE,kBAAC,GAAD;EACE,GAAI;EACJ,eAAe;GACb,EAAgB;EAClB;YAEC;CACK,CAAA;AAEZ"}
@@ -1 +1 @@
1
- {"version":3,"file":"ActionRequiredCard.js","names":[],"sources":["../../../../src/components/DownloadCart/ActionRequiredCard/ActionRequiredCard.tsx"],"sourcesContent":["import {\n Box,\n Paper,\n PaperProps,\n Skeleton,\n styled,\n Typography,\n} from '@mui/material'\nimport { ReactNode } from 'react'\nimport Icon from '../../Icon'\nimport { StyledComponent } from '@emotion/styled'\n\nexport type ActionRequiredCardProps =\n | {\n title: ReactNode\n description: ReactNode\n actionNode: ReactNode\n iconType: string\n count?: number\n isLoading?: false\n }\n | { isLoading: true }\n\nconst ActionRequiredCardContainer: StyledComponent<PaperProps> = styled(Paper, {\n label: 'ActionRequiredCardContainer',\n})(({ theme }) => ({\n padding: `${theme.spacing(2.5)} ${theme.spacing(4)}`,\n display: 'grid',\n alignItems: 'center',\n gridTemplateColumns: '160px auto 200px',\n gap: theme.spacing(4),\n [theme.breakpoints.down('sm')]: {\n gridTemplateColumns: '1fr', // Single column layout for mobile\n },\n}))\n\n/**\n * The ActionRequiredCard component renders a generic card that represents some action that a user must take to gain\n * download access to a file.\n * @param props\n * @returns\n */\nexport function ActionRequiredCard(props: ActionRequiredCardProps) {\n if (props.isLoading) {\n return <LoadingActionRequiredCard />\n }\n const { title, description, iconType, count, actionNode } = props\n return (\n <ActionRequiredCardContainer>\n <Box sx={{ textAlign: 'center', minWidth: '100px' }}>\n <Icon type={iconType} />\n </Box>\n <Box sx={{ flexGrow: 1 }}>\n <Typography variant=\"headline3\" sx={{ mb: 1 }}>\n {title}\n </Typography>\n {count && (\n <Typography variant={'smallText1'} sx={{ my: 1, color: 'grey.700' }}>\n {count} File{count != 1 ? 's' : ''}\n </Typography>\n )}\n <Typography variant={'smallText1'}>{description}</Typography>\n </Box>\n <Box sx={{ textAlign: 'center', marginLeft: 'auto' }}>{actionNode}</Box>\n </ActionRequiredCardContainer>\n )\n}\n\nexport function LoadingActionRequiredCard() {\n return (\n <ActionRequiredCardContainer>\n <Skeleton variant=\"rectangular\" width={136} height={74} />\n <div>\n <Skeleton width={250} />\n <Skeleton width={100} />\n </div>\n <Skeleton variant=\"rectangular\" width={160} height={33} />\n </ActionRequiredCardContainer>\n )\n}\n"],"mappings":";;;;AAuBA,IAAM,IAA2D,EAAO,GAAO,EAC7E,OAAO,+BACR,CAAC,EAAE,EAAE,gBAAa;CACjB,SAAS,GAAG,EAAM,QAAQ,IAAI,CAAC,GAAG,EAAM,QAAQ,EAAE;CAClD,SAAS;CACT,YAAY;CACZ,qBAAqB;CACrB,KAAK,EAAM,QAAQ,EAAE;EACpB,EAAM,YAAY,KAAK,KAAK,GAAG,EAC9B,qBAAqB,OACtB;CACF,EAAE;AAQH,SAAgB,EAAmB,GAAgC;AACjE,KAAI,EAAM,UACR,QAAO,kBAAC,GAAD,EAA6B,CAAA;CAEtC,IAAM,EAAE,UAAO,gBAAa,aAAU,UAAO,kBAAe;AAC5D,QACE,kBAAC,GAAD,EAAA,UAAA;EACE,kBAAC,GAAD;GAAK,IAAI;IAAE,WAAW;IAAU,UAAU;IAAS;aACjD,kBAAC,GAAD,EAAM,MAAM,GAAY,CAAA;GACpB,CAAA;EACN,kBAAC,GAAD;GAAK,IAAI,EAAE,UAAU,GAAG;aAAxB;IACE,kBAAC,GAAD;KAAY,SAAQ;KAAY,IAAI,EAAE,IAAI,GAAG;eAC1C;KACU,CAAA;IACZ,KACC,kBAAC,GAAD;KAAY,SAAS;KAAc,IAAI;MAAE,IAAI;MAAG,OAAO;MAAY;eAAnE;MACG;MAAM;MAAM,KAAS,IAAU,KAAN;MACf;;IAEf,kBAAC,GAAD;KAAY,SAAS;eAAe;KAAyB,CAAA;IACzD;;EACN,kBAAC,GAAD;GAAK,IAAI;IAAE,WAAW;IAAU,YAAY;IAAQ;aAAG;GAAiB,CAAA;EAC5C,EAAA,CAAA;;AAIlC,SAAgB,IAA4B;AAC1C,QACE,kBAAC,GAAD,EAAA,UAAA;EACE,kBAAC,GAAD;GAAU,SAAQ;GAAc,OAAO;GAAK,QAAQ;GAAM,CAAA;EAC1D,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAU,OAAO,KAAO,CAAA,EACxB,kBAAC,GAAD,EAAU,OAAO,KAAO,CAAA,CACpB,EAAA,CAAA;EACN,kBAAC,GAAD;GAAU,SAAQ;GAAc,OAAO;GAAK,QAAQ;GAAM,CAAA;EAC9B,EAAA,CAAA"}
1
+ {"version":3,"file":"ActionRequiredCard.js","names":[],"sources":["../../../../src/components/DownloadCart/ActionRequiredCard/ActionRequiredCard.tsx"],"sourcesContent":["import {\n Box,\n Paper,\n PaperProps,\n Skeleton,\n styled,\n Typography,\n} from '@mui/material'\nimport { ReactNode } from 'react'\nimport Icon from '../../Icon'\nimport { StyledComponent } from '@emotion/styled'\n\nexport type ActionRequiredCardProps =\n | {\n title: ReactNode\n description: ReactNode\n actionNode: ReactNode\n iconType: string\n count?: number\n isLoading?: false\n }\n | { isLoading: true }\n\nconst ActionRequiredCardContainer: StyledComponent<PaperProps> = styled(Paper, {\n label: 'ActionRequiredCardContainer',\n})(({ theme }) => ({\n padding: `${theme.spacing(2.5)} ${theme.spacing(4)}`,\n display: 'grid',\n alignItems: 'center',\n gridTemplateColumns: '160px auto 200px',\n gap: theme.spacing(4),\n [theme.breakpoints.down('sm')]: {\n gridTemplateColumns: '1fr', // Single column layout for mobile\n },\n}))\n\n/**\n * The ActionRequiredCard component renders a generic card that represents some action that a user must take to gain\n * download access to a file.\n * @param props\n * @returns\n */\nexport function ActionRequiredCard(props: ActionRequiredCardProps) {\n if (props.isLoading) {\n return <LoadingActionRequiredCard />\n }\n const { title, description, iconType, count, actionNode } = props\n return (\n <ActionRequiredCardContainer>\n <Box sx={{ textAlign: 'center', minWidth: '100px' }}>\n <Icon type={iconType} />\n </Box>\n <Box sx={{ flexGrow: 1 }}>\n <Typography variant=\"headline3\" sx={{ mb: 1 }}>\n {title}\n </Typography>\n {count && (\n <Typography variant={'smallText1'} sx={{ my: 1, color: 'grey.700' }}>\n {count} File{count != 1 ? 's' : ''}\n </Typography>\n )}\n <Typography variant={'smallText1'}>{description}</Typography>\n </Box>\n <Box sx={{ textAlign: 'center', marginLeft: 'auto' }}>{actionNode}</Box>\n </ActionRequiredCardContainer>\n )\n}\n\nexport function LoadingActionRequiredCard() {\n return (\n <ActionRequiredCardContainer>\n <Skeleton variant=\"rectangular\" width={136} height={74} />\n <div>\n <Skeleton width={250} />\n <Skeleton width={100} />\n </div>\n <Skeleton variant=\"rectangular\" width={160} height={33} />\n </ActionRequiredCardContainer>\n )\n}\n"],"mappings":";;;;AAuBA,IAAM,IAA2D,EAAO,GAAO,EAC7E,OAAO,8BACT,CAAC,GAAG,EAAE,gBAAa;CACjB,SAAS,GAAG,EAAM,QAAQ,GAAG,EAAE,GAAG,EAAM,QAAQ,CAAC;CACjD,SAAS;CACT,YAAY;CACZ,qBAAqB;CACrB,KAAK,EAAM,QAAQ,CAAC;EACnB,EAAM,YAAY,KAAK,IAAI,IAAI,EAC9B,qBAAqB,MACvB;AACF,EAAE;AAQF,SAAgB,EAAmB,GAAgC;CACjE,IAAI,EAAM,WACR,OAAO,kBAAC,GAAD,CAA4B,CAAA;CAErC,IAAM,EAAE,UAAO,gBAAa,aAAU,UAAO,kBAAe;CAC5D,OACE,kBAAC,GAAD,EAAA,UAAA;EACE,kBAAC,GAAD;GAAK,IAAI;IAAE,WAAW;IAAU,UAAU;GAAQ;aAChD,kBAAC,GAAD,EAAM,MAAM,EAAW,CAAA;EACpB,CAAA;EACL,kBAAC,GAAD;GAAK,IAAI,EAAE,UAAU,EAAE;aAAvB;IACE,kBAAC,GAAD;KAAY,SAAQ;KAAY,IAAI,EAAE,IAAI,EAAE;eACzC;IACS,CAAA;IACX,KACC,kBAAC,GAAD;KAAY,SAAS;KAAc,IAAI;MAAE,IAAI;MAAG,OAAO;KAAW;eAAlE;MACG;MAAM;MAAM,KAAS,IAAU,KAAN;KAChB;;IAEd,kBAAC,GAAD;KAAY,SAAS;eAAe;IAAwB,CAAA;GACzD;;EACL,kBAAC,GAAD;GAAK,IAAI;IAAE,WAAW;IAAU,YAAY;GAAO;aAAI;EAAgB,CAAA;CAC5C,EAAA,CAAA;AAEjC;AAEA,SAAgB,IAA4B;CAC1C,OACE,kBAAC,GAAD,EAAA,UAAA;EACE,kBAAC,GAAD;GAAU,SAAQ;GAAc,OAAO;GAAK,QAAQ;EAAK,CAAA;EACzD,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAU,OAAO,IAAM,CAAA,GACvB,kBAAC,GAAD,EAAU,OAAO,IAAM,CAAA,CACpB,EAAA,CAAA;EACL,kBAAC,GAAD;GAAU,SAAQ;GAAc,OAAO;GAAK,QAAQ;EAAK,CAAA;CAC9B,EAAA,CAAA;AAEjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ActionRequiredListItem.js","names":[],"sources":["../../../src/components/DownloadCart/ActionRequiredListItem.tsx"],"sourcesContent":["import { Action } from '@sage-bionetworks/synapse-types'\nimport { MeetAccessRequirementCard } from './MeetAccessRequirementCard'\nimport { RequestDownloadCard } from './RequestDownloadCard'\nimport { EnableTwoFaRequirementCard } from './EnableTwoFaRequirementCard'\n\nexport type ActionRequiredListItemProps = {\n action: Action\n count?: number\n /** Invoked when a user clicks \"View Sharing Settings\" for a set of files that require the Download permission*/\n onViewSharingSettingsClicked?: (benefactorId: string) => void\n}\n\nexport function ActionRequiredListItem(props: ActionRequiredListItemProps) {\n const { action, count, onViewSharingSettingsClicked } = props\n switch (action.concreteType) {\n case 'org.sagebionetworks.repo.model.download.MeetAccessRequirement': {\n return (\n <MeetAccessRequirementCard\n key={action.accessRequirementId}\n accessRequirementId={action.accessRequirementId}\n count={count}\n />\n )\n }\n case 'org.sagebionetworks.repo.model.download.RequestDownload': {\n return (\n <RequestDownloadCard\n key={action.benefactorId}\n entityId={`syn${action.benefactorId}`}\n count={count}\n onViewSharingSettingsClicked={onViewSharingSettingsClicked}\n />\n )\n }\n case 'org.sagebionetworks.repo.model.download.EnableTwoFa': {\n return (\n <EnableTwoFaRequirementCard\n key={action.accessRequirementId}\n accessRequirementId={action.accessRequirementId}\n count={count}\n />\n )\n }\n\n // case not supported yet\n default:\n return <></>\n }\n}\n"],"mappings":";;;;;AAYA,SAAgB,EAAuB,GAAoC;CACzE,IAAM,EAAE,WAAQ,UAAO,oCAAiC;AACxD,SAAQ,EAAO,cAAf;EACE,KAAK,gEACH,QACE,kBAAC,GAAD;GAEE,qBAAqB,EAAO;GACrB;GACP,EAHK,EAAO,oBAGZ;EAGN,KAAK,0DACH,QACE,kBAAC,GAAD;GAEE,UAAU,MAAM,EAAO;GAChB;GACuB;GAC9B,EAJK,EAAO,aAIZ;EAGN,KAAK,sDACH,QACE,kBAAC,GAAD;GAEE,qBAAqB,EAAO;GACrB;GACP,EAHK,EAAO,oBAGZ;EAKN,QACE,QAAO,kBAAA,GAAA,EAAK,CAAA"}
1
+ {"version":3,"file":"ActionRequiredListItem.js","names":[],"sources":["../../../src/components/DownloadCart/ActionRequiredListItem.tsx"],"sourcesContent":["import { Action } from '@sage-bionetworks/synapse-types'\nimport { MeetAccessRequirementCard } from './MeetAccessRequirementCard'\nimport { RequestDownloadCard } from './RequestDownloadCard'\nimport { EnableTwoFaRequirementCard } from './EnableTwoFaRequirementCard'\n\nexport type ActionRequiredListItemProps = {\n action: Action\n count?: number\n /** Invoked when a user clicks \"View Sharing Settings\" for a set of files that require the Download permission*/\n onViewSharingSettingsClicked?: (benefactorId: string) => void\n}\n\nexport function ActionRequiredListItem(props: ActionRequiredListItemProps) {\n const { action, count, onViewSharingSettingsClicked } = props\n switch (action.concreteType) {\n case 'org.sagebionetworks.repo.model.download.MeetAccessRequirement': {\n return (\n <MeetAccessRequirementCard\n key={action.accessRequirementId}\n accessRequirementId={action.accessRequirementId}\n count={count}\n />\n )\n }\n case 'org.sagebionetworks.repo.model.download.RequestDownload': {\n return (\n <RequestDownloadCard\n key={action.benefactorId}\n entityId={`syn${action.benefactorId}`}\n count={count}\n onViewSharingSettingsClicked={onViewSharingSettingsClicked}\n />\n )\n }\n case 'org.sagebionetworks.repo.model.download.EnableTwoFa': {\n return (\n <EnableTwoFaRequirementCard\n key={action.accessRequirementId}\n accessRequirementId={action.accessRequirementId}\n count={count}\n />\n )\n }\n\n // case not supported yet\n default:\n return <></>\n }\n}\n"],"mappings":";;;;;AAYA,SAAgB,EAAuB,GAAoC;CACzE,IAAM,EAAE,WAAQ,UAAO,oCAAiC;CACxD,QAAQ,EAAO,cAAf;EACE,KAAK,iEACH,OACE,kBAAC,GAAD;GAEE,qBAAqB,EAAO;GACrB;EACR,GAHM,EAAO,mBAGb;EAGL,KAAK,2DACH,OACE,kBAAC,GAAD;GAEE,UAAU,MAAM,EAAO;GAChB;GACuB;EAC/B,GAJM,EAAO,YAIb;EAGL,KAAK,uDACH,OACE,kBAAC,GAAD;GAEE,qBAAqB,EAAO;GACrB;EACR,GAHM,EAAO,mBAGb;EAKL,SACE,OAAO,kBAAA,GAAA,CAAI,CAAA;CACf;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"AvailableForDownloadTable.js","names":[],"sources":["../../../src/components/DownloadCart/AvailableForDownloadTable.tsx"],"sourcesContent":["import { useSynapseContext } from '@/utils'\nimport { AvailableFilter } from '@sage-bionetworks/synapse-types'\nimport { SynapseErrorBoundary } from '../error/ErrorBanner'\nimport DownloadListTable from './DownloadListTable'\n\nexport type AvailableForDownloadTableProps = {\n filter?: AvailableFilter\n}\n\n/**\n * Table of the files added to the Download List that are currently available for download.\n */\nexport default function AvailableForDownloadTable({\n filter,\n}: AvailableForDownloadTableProps) {\n const { isAuthenticated } = useSynapseContext()\n if (!isAuthenticated) {\n return <></>\n }\n return (\n <SynapseErrorBoundary>\n <DownloadListTable filter={filter} />\n </SynapseErrorBoundary>\n )\n}\n"],"mappings":";;;;;;AAYA,SAAwB,EAA0B,EAChD,aACiC;CACjC,IAAM,EAAE,uBAAoB,GAAmB;AAI/C,QAHK,IAIH,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAA2B,WAAU,CAAA,EAChB,CAAA,GALhB,kBAAA,GAAA,EAAK,CAAA"}
1
+ {"version":3,"file":"AvailableForDownloadTable.js","names":[],"sources":["../../../src/components/DownloadCart/AvailableForDownloadTable.tsx"],"sourcesContent":["import { useSynapseContext } from '@/utils'\nimport { AvailableFilter } from '@sage-bionetworks/synapse-types'\nimport { SynapseErrorBoundary } from '../error/ErrorBanner'\nimport DownloadListTable from './DownloadListTable'\n\nexport type AvailableForDownloadTableProps = {\n filter?: AvailableFilter\n}\n\n/**\n * Table of the files added to the Download List that are currently available for download.\n */\nexport default function AvailableForDownloadTable({\n filter,\n}: AvailableForDownloadTableProps) {\n const { isAuthenticated } = useSynapseContext()\n if (!isAuthenticated) {\n return <></>\n }\n return (\n <SynapseErrorBoundary>\n <DownloadListTable filter={filter} />\n </SynapseErrorBoundary>\n )\n}\n"],"mappings":";;;;;;AAYA,SAAwB,EAA0B,EAChD,aACiC;CACjC,IAAM,EAAE,uBAAoB,EAAkB;CAI9C,OAHK,IAIH,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAA2B,UAAS,CAAA,EAChB,CAAA,IALf,kBAAA,GAAA,CAAI,CAAA;AAOf"}
@@ -1 +1 @@
1
- {"version":3,"file":"CreatePackageV2.js","names":[],"sources":["../../../src/components/DownloadCart/CreatePackageV2.tsx"],"sourcesContent":["import styles from './CreatePackageV2.module.scss'\nimport {\n createPackageFromDownloadListV2,\n getFileHandleByIdURL,\n} from '@/synapse-client/SynapseClient'\nimport React from 'react'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { useQueryClient } from '@tanstack/react-query'\nimport { Box, Button, Card, InputAdornment, TextField } from '@mui/material'\nimport { DownloadListPackageResponse } from '@sage-bionetworks/synapse-types'\nimport { ChangeEvent, SyntheticEvent, useState } from 'react'\nimport FullWidthAlert, {\n FullWidthAlertVariant,\n} from '../FullWidthAlert/FullWidthAlert'\n\nexport type CreatePackageV2Props = {\n onPackageCreation: () => void\n}\n\ntype AlertConfig = {\n message: string\n variant?: FullWidthAlertVariant\n}\n\nexport const TEMPLATE_ERROR_FILE_NAME =\n 'Please provide a package file name and try again.'\n\nexport const CreatePackageV2 = (\n props: CreatePackageV2Props,\n): React.ReactNode => {\n const { accessToken, keyFactory } = useSynapseContext()\n const queryClient = useQueryClient()\n const [isLoading, setIsLoading] = useState(false)\n const [fileName, setZipFileName] = useState('')\n const [alert, setAlert] = useState<AlertConfig>()\n const [bulkFileDownloadResponse, setBulkFileDownloadResponse] = useState<\n DownloadListPackageResponse | undefined\n >(undefined)\n const { onPackageCreation } = props\n const createPackageHandler = async (event: SyntheticEvent) => {\n event.preventDefault()\n if (!fileName) {\n setAlert({\n message: TEMPLATE_ERROR_FILE_NAME,\n variant: 'danger',\n })\n return\n }\n setIsLoading(true)\n try {\n const fileNameWithZipExtension = `${fileName}.zip`\n const currentBulkFileDownloadResponse =\n await createPackageFromDownloadListV2(\n fileNameWithZipExtension,\n accessToken,\n )\n\n setBulkFileDownloadResponse(currentBulkFileDownloadResponse)\n const { resultFileHandleId } = currentBulkFileDownloadResponse\n try {\n //reset\n window.location.href = await getFileHandleByIdURL(\n resultFileHandleId,\n accessToken,\n )\n setZipFileName('')\n setBulkFileDownloadResponse(undefined)\n queryClient.invalidateQueries({\n queryKey: keyFactory.getDownloadListBaseQueryKey(),\n })\n onPackageCreation()\n } catch (err) {\n console.error('Err on getFileHandleByIdURL = ', err)\n }\n } catch (err) {\n setAlert({\n message: err.reason as string,\n variant: 'danger',\n })\n } finally {\n setIsLoading(false)\n }\n }\n\n const onChange = (event: ChangeEvent<HTMLInputElement>) => {\n setZipFileName(event.target.value)\n }\n\n return (\n <>\n <Card className={styles.CreatePackageV2}>\n <div className={styles.createPackageStep}>\n <span className={styles.createPackageTitle}>\n Create your Download Package\n </span>\n <span className={styles.createPackageDescription}>\n Name your download package and select Download Package to get\n started.\n </span>\n {!isLoading && !bulkFileDownloadResponse && (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'stretch',\n }}\n >\n <TextField\n onChange={onChange}\n type=\"text\"\n placeholder=\"PackageName\"\n sx={{ width: '233px' }}\n slotProps={{\n input: {\n endAdornment: (\n <InputAdornment position=\"end\">.zip</InputAdornment>\n ),\n },\n }}\n />\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={e => {\n createPackageHandler(e)\n }}\n sx={{ marginLeft: '20px' }}\n disabled={!fileName}\n >\n Download Package\n </Button>\n </Box>\n )}\n {isLoading && (\n <div className=\"creatingPackage\">\n <span className=\"spinner\" />\n <span style={{ marginLeft: 5 }}>Creating package...</span>\n </div>\n )}\n </div>\n </Card>\n <FullWidthAlert\n show={!!alert}\n variant={alert?.variant ? alert.variant : 'success'}\n description={alert?.message}\n autoCloseAfterDelayInSeconds={10}\n onClose={() => {\n setAlert(undefined)\n }}\n />\n </>\n )\n}\n"],"mappings":";;;;;;;;;AAwBA,IAAa,IACX,qDAEW,KACX,MACoB;CACpB,IAAM,EAAE,gBAAa,kBAAe,GAAmB,EACjD,IAAc,GAAgB,EAC9B,CAAC,GAAW,KAAgB,EAAS,GAAM,EAC3C,CAAC,GAAU,KAAkB,EAAS,GAAG,EACzC,CAAC,GAAO,KAAY,GAAuB,EAC3C,CAAC,GAA0B,KAA+B,EAE9D,KAAA,EAAU,EACN,EAAE,yBAAsB,GACxB,IAAuB,OAAO,MAA0B;AAE5D,MADA,EAAM,gBAAgB,EAClB,CAAC,GAAU;AACb,KAAS;IACP,SAAS;IACT,SAAS;IACV,CAAC;AACF;;AAEF,IAAa,GAAK;AAClB,MAAI;GAEF,IAAM,IACJ,MAAM,EACJ,GAHgC,EAAS,OAIzC,EACD;AAEH,KAA4B,EAAgC;GAC5D,IAAM,EAAE,0BAAuB;AAC/B,OAAI;AAWF,IATA,OAAO,SAAS,OAAO,MAAM,EAC3B,GACA,EACD,EACD,EAAe,GAAG,EAClB,EAA4B,KAAA,EAAU,EACtC,EAAY,kBAAkB,EAC5B,UAAU,EAAW,6BAA6B,EACnD,CAAC,EACF,GAAmB;YACZ,GAAK;AACZ,YAAQ,MAAM,kCAAkC,EAAI;;WAE/C,GAAK;AACZ,KAAS;IACP,SAAS,EAAI;IACb,SAAS;IACV,CAAC;YACM;AACR,KAAa,GAAM;;;AAQvB,QACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;EAAM,WAAW,EAAO;YACtB,kBAAC,OAAD;GAAK,WAAW,EAAO;aAAvB;IACE,kBAAC,QAAD;KAAM,WAAW,EAAO;eAAoB;KAErC,CAAA;IACP,kBAAC,QAAD;KAAM,WAAW,EAAO;eAA0B;KAG3C,CAAA;IACN,CAAC,KAAa,CAAC,KACd,kBAAC,GAAD;KACE,IAAI;MACF,SAAS;MACT,YAAY;MACb;eAJH,CAME,kBAAC,GAAD;MACY,WAvBN,MAAyC;AACzD,SAAe,EAAM,OAAO,MAAM;;MAuBtB,MAAK;MACL,aAAY;MACZ,IAAI,EAAE,OAAO,SAAS;MACtB,WAAW,EACT,OAAO,EACL,cACE,kBAAC,GAAD;OAAgB,UAAS;iBAAM;OAAqB,CAAA,EAEvD,EACF;MACD,CAAA,EACF,kBAAC,GAAD;MACE,SAAQ;MACR,OAAM;MACN,UAAS,MAAK;AACZ,SAAqB,EAAE;;MAEzB,IAAI,EAAE,YAAY,QAAQ;MAC1B,UAAU,CAAC;gBACZ;MAEQ,CAAA,CACL;;IAEP,KACC,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,QAAD,EAAM,WAAU,WAAY,CAAA,EAC5B,kBAAC,QAAD;MAAM,OAAO,EAAE,YAAY,GAAG;gBAAE;MAA0B,CAAA,CACtD;;IAEJ;;EACD,CAAA,EACP,kBAAC,GAAD;EACE,MAAM,CAAC,CAAC;EACR,SAAS,GAAO,UAAU,EAAM,UAAU;EAC1C,aAAa,GAAO;EACpB,8BAA8B;EAC9B,eAAe;AACb,KAAS,KAAA,EAAU;;EAErB,CAAA,CACD,EAAA,CAAA"}
1
+ {"version":3,"file":"CreatePackageV2.js","names":[],"sources":["../../../src/components/DownloadCart/CreatePackageV2.tsx"],"sourcesContent":["import styles from './CreatePackageV2.module.scss'\nimport {\n createPackageFromDownloadListV2,\n getFileHandleByIdURL,\n} from '@/synapse-client/SynapseClient'\nimport React from 'react'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { useQueryClient } from '@tanstack/react-query'\nimport { Box, Button, Card, InputAdornment, TextField } from '@mui/material'\nimport { DownloadListPackageResponse } from '@sage-bionetworks/synapse-types'\nimport { ChangeEvent, SyntheticEvent, useState } from 'react'\nimport FullWidthAlert, {\n FullWidthAlertVariant,\n} from '../FullWidthAlert/FullWidthAlert'\n\nexport type CreatePackageV2Props = {\n onPackageCreation: () => void\n}\n\ntype AlertConfig = {\n message: string\n variant?: FullWidthAlertVariant\n}\n\nexport const TEMPLATE_ERROR_FILE_NAME =\n 'Please provide a package file name and try again.'\n\nexport const CreatePackageV2 = (\n props: CreatePackageV2Props,\n): React.ReactNode => {\n const { accessToken, keyFactory } = useSynapseContext()\n const queryClient = useQueryClient()\n const [isLoading, setIsLoading] = useState(false)\n const [fileName, setZipFileName] = useState('')\n const [alert, setAlert] = useState<AlertConfig>()\n const [bulkFileDownloadResponse, setBulkFileDownloadResponse] = useState<\n DownloadListPackageResponse | undefined\n >(undefined)\n const { onPackageCreation } = props\n const createPackageHandler = async (event: SyntheticEvent) => {\n event.preventDefault()\n if (!fileName) {\n setAlert({\n message: TEMPLATE_ERROR_FILE_NAME,\n variant: 'danger',\n })\n return\n }\n setIsLoading(true)\n try {\n const fileNameWithZipExtension = `${fileName}.zip`\n const currentBulkFileDownloadResponse =\n await createPackageFromDownloadListV2(\n fileNameWithZipExtension,\n accessToken,\n )\n\n setBulkFileDownloadResponse(currentBulkFileDownloadResponse)\n const { resultFileHandleId } = currentBulkFileDownloadResponse\n try {\n //reset\n window.location.href = await getFileHandleByIdURL(\n resultFileHandleId,\n accessToken,\n )\n setZipFileName('')\n setBulkFileDownloadResponse(undefined)\n queryClient.invalidateQueries({\n queryKey: keyFactory.getDownloadListBaseQueryKey(),\n })\n onPackageCreation()\n } catch (err) {\n console.error('Err on getFileHandleByIdURL = ', err)\n }\n } catch (err) {\n setAlert({\n message: err.reason as string,\n variant: 'danger',\n })\n } finally {\n setIsLoading(false)\n }\n }\n\n const onChange = (event: ChangeEvent<HTMLInputElement>) => {\n setZipFileName(event.target.value)\n }\n\n return (\n <>\n <Card className={styles.CreatePackageV2}>\n <div className={styles.createPackageStep}>\n <span className={styles.createPackageTitle}>\n Create your Download Package\n </span>\n <span className={styles.createPackageDescription}>\n Name your download package and select Download Package to get\n started.\n </span>\n {!isLoading && !bulkFileDownloadResponse && (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'stretch',\n }}\n >\n <TextField\n onChange={onChange}\n type=\"text\"\n placeholder=\"PackageName\"\n sx={{ width: '233px' }}\n slotProps={{\n input: {\n endAdornment: (\n <InputAdornment position=\"end\">.zip</InputAdornment>\n ),\n },\n }}\n />\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={e => {\n createPackageHandler(e)\n }}\n sx={{ marginLeft: '20px' }}\n disabled={!fileName}\n >\n Download Package\n </Button>\n </Box>\n )}\n {isLoading && (\n <div className=\"creatingPackage\">\n <span className=\"spinner\" />\n <span style={{ marginLeft: 5 }}>Creating package...</span>\n </div>\n )}\n </div>\n </Card>\n <FullWidthAlert\n show={!!alert}\n variant={alert?.variant ? alert.variant : 'success'}\n description={alert?.message}\n autoCloseAfterDelayInSeconds={10}\n onClose={() => {\n setAlert(undefined)\n }}\n />\n </>\n )\n}\n"],"mappings":";;;;;;;;;AAwBA,IAAa,IACX,qDAEW,KACX,MACoB;CACpB,IAAM,EAAE,gBAAa,kBAAe,EAAkB,GAChD,IAAc,EAAe,GAC7B,CAAC,GAAW,KAAgB,EAAS,EAAK,GAC1C,CAAC,GAAU,KAAkB,EAAS,EAAE,GACxC,CAAC,GAAO,KAAY,EAAsB,GAC1C,CAAC,GAA0B,KAA+B,EAE9D,KAAA,CAAS,GACL,EAAE,yBAAsB,GACxB,IAAuB,OAAO,MAA0B;EAE5D,IADA,EAAM,eAAe,GACjB,CAAC,GAAU;GACb,EAAS;IACP,SAAS;IACT,SAAS;GACX,CAAC;GACD;EACF;EACA,EAAa,EAAI;EACjB,IAAI;GAEF,IAAM,IACJ,MAAM,EACJ,GAHgC,EAAS,OAIzC,CACF;GAEF,EAA4B,CAA+B;GAC3D,IAAM,EAAE,0BAAuB;GAC/B,IAAI;IAWF,AATA,OAAO,SAAS,OAAO,MAAM,EAC3B,GACA,CACF,GACA,EAAe,EAAE,GACjB,EAA4B,KAAA,CAAS,GACrC,EAAY,kBAAkB,EAC5B,UAAU,EAAW,4BAA4B,EACnD,CAAC,GACD,EAAkB;GACpB,SAAS,GAAK;IACZ,QAAQ,MAAM,kCAAkC,CAAG;GACrD;EACF,SAAS,GAAK;GACZ,EAAS;IACP,SAAS,EAAI;IACb,SAAS;GACX,CAAC;EACH,UAAU;GACR,EAAa,EAAK;EACpB;CACF;CAMA,OACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;EAAM,WAAW,EAAO;YACtB,kBAAC,OAAD;GAAK,WAAW,EAAO;aAAvB;IACE,kBAAC,QAAD;KAAM,WAAW,EAAO;eAAoB;IAEtC,CAAA;IACN,kBAAC,QAAD;KAAM,WAAW,EAAO;eAA0B;IAG5C,CAAA;IACL,CAAC,KAAa,CAAC,KACd,kBAAC,GAAD;KACE,IAAI;MACF,SAAS;MACT,YAAY;KACd;eAJF,CAME,kBAAC,GAAD;MACY,WAvBN,MAAyC;OACzD,EAAe,EAAM,OAAO,KAAK;MACnC;MAsBc,MAAK;MACL,aAAY;MACZ,IAAI,EAAE,OAAO,QAAQ;MACrB,WAAW,EACT,OAAO,EACL,cACE,kBAAC,GAAD;OAAgB,UAAS;iBAAM;MAAoB,CAAA,EAEvD,EACF;KACD,CAAA,GACD,kBAAC,GAAD;MACE,SAAQ;MACR,OAAM;MACN,UAAS,MAAK;OACZ,EAAqB,CAAC;MACxB;MACA,IAAI,EAAE,YAAY,OAAO;MACzB,UAAU,CAAC;gBACZ;KAEO,CAAA,CACL;;IAEN,KACC,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,QAAD,EAAM,WAAU,UAAW,CAAA,GAC3B,kBAAC,QAAD;MAAM,OAAO,EAAE,YAAY,EAAE;gBAAG;KAAyB,CAAA,CACtD;;GAEJ;;CACD,CAAA,GACN,kBAAC,GAAD;EACE,MAAM,CAAC,CAAC;EACR,SAAS,GAAO,UAAU,EAAM,UAAU;EAC1C,aAAa,GAAO;EACpB,8BAA8B;EAC9B,eAAe;GACb,EAAS,KAAA,CAAS;EACpB;CACD,CAAA,CACD,EAAA,CAAA;AAEN"}
@@ -1 +1 @@
1
- {"version":3,"file":"DirectProgrammaticDownload.js","names":[],"sources":["../../../src/components/DownloadCart/DirectProgrammaticDownload.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { Tooltip } from '@mui/material'\nimport IconSvg from '../IconSvg/IconSvg'\nimport { ProgrammaticInstructionsModal } from '../ProgrammaticInstructionsModal/ProgrammaticInstructionsModal'\nimport { TOOLTIP_DELAY_SHOW } from '../SynapseTable/SynapseTableConstants'\n\ntype DirectProgrammaticDownloadProps = {\n entityId: string\n version?: number\n}\nexport const PYTHON_CLIENT_IMPORT_AND_LOGIN = `import synapseclient\nsyn = synapseclient.Synapse()\nsyn.login(authToken=\"YOUR_TOKEN_HERE\")\n`\n\nexport const R_CLIENT_IMPORT_AND_LOGIN = `library(synapser)\nsynLogin(authToken=\"YOUR_TOKEN_HERE\")\n`\n\nfunction DirectProgrammaticDownload({\n entityId,\n version,\n}: DirectProgrammaticDownloadProps) {\n const [isShowingModal, setIsShowingModal] = useState<boolean>(false)\n\n const rCode = `${R_CLIENT_IMPORT_AND_LOGIN}\n# Obtain a pointer and download the data\n${entityId} <- synGet(entity='${entityId}'${\n version ? `, version=${version}` : ''\n } ) `\n\n const pythonCode = `${PYTHON_CLIENT_IMPORT_AND_LOGIN}\n# Obtain a pointer and download the data\n${entityId} = syn.get(entity='${entityId}'${\n version ? `, version=${version}` : ''\n } )\n\n# Get the path to the local copy of the data file\nfilepath = ${entityId}.path`\n\n const cliCode = `synapse get ${entityId} ${\n version ? `--version ${version}` : ''\n }`\n\n return (\n <>\n <Tooltip\n title=\"Programmatic download options\"\n enterNextDelay={TOOLTIP_DELAY_SHOW}\n placement=\"left\"\n >\n <span>\n <button\n className={'btn-download-icon'}\n onClick={() => setIsShowingModal(true)}\n >\n <IconSvg icon=\"code\" />\n </button>\n </span>\n </Tooltip>\n {isShowingModal && (\n <ProgrammaticInstructionsModal\n show={true}\n onClose={() => setIsShowingModal(false)}\n title=\"Download Programmatically\"\n cliCode={cliCode}\n rCode={rCode}\n pythonCode={pythonCode}\n />\n )}\n </>\n )\n}\n\nexport default DirectProgrammaticDownload\n"],"mappings":";;;;;;;AAUA,IAAa,IAAiC,mGAKjC,IAA4B;AAIzC,SAAS,EAA2B,EAClC,aACA,cACkC;CAClC,IAAM,CAAC,GAAgB,KAAqB,EAAkB,GAAM,EAE9D,IAAQ,GAAG,EAA0B;;EAE3C,EAAS,qBAAqB,EAAS,GACrC,IAAU,aAAa,MAAY,GACpC,MAEK,IAAa,GAAG,EAA+B;;EAErD,EAAS,qBAAqB,EAAS,GACrC,IAAU,aAAa,MAAY,GACpC;;;aAGU,EAAS,QAEd,IAAU,eAAe,EAAS,GACtC,IAAU,aAAa,MAAY;AAGrC,QACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;EACE,OAAM;EACN,gBAAA;EACA,WAAU;YAEV,kBAAC,QAAD,EAAA,UACE,kBAAC,UAAD;GACE,WAAW;GACX,eAAe,EAAkB,GAAK;aAEtC,kBAAC,GAAD,EAAS,MAAK,QAAS,CAAA;GAChB,CAAA,EACJ,CAAA;EACC,CAAA,EACT,KACC,kBAAC,GAAD;EACE,MAAM;EACN,eAAe,EAAkB,GAAM;EACvC,OAAM;EACG;EACF;EACK;EACZ,CAAA,CAEH,EAAA,CAAA"}
1
+ {"version":3,"file":"DirectProgrammaticDownload.js","names":[],"sources":["../../../src/components/DownloadCart/DirectProgrammaticDownload.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { Tooltip } from '@mui/material'\nimport IconSvg from '../IconSvg/IconSvg'\nimport { ProgrammaticInstructionsModal } from '../ProgrammaticInstructionsModal/ProgrammaticInstructionsModal'\nimport { TOOLTIP_DELAY_SHOW } from '../SynapseTable/SynapseTableConstants'\n\ntype DirectProgrammaticDownloadProps = {\n entityId: string\n version?: number\n}\nexport const PYTHON_CLIENT_IMPORT_AND_LOGIN = `import synapseclient\nsyn = synapseclient.Synapse()\nsyn.login(authToken=\"YOUR_TOKEN_HERE\")\n`\n\nexport const R_CLIENT_IMPORT_AND_LOGIN = `library(synapser)\nsynLogin(authToken=\"YOUR_TOKEN_HERE\")\n`\n\nfunction DirectProgrammaticDownload({\n entityId,\n version,\n}: DirectProgrammaticDownloadProps) {\n const [isShowingModal, setIsShowingModal] = useState<boolean>(false)\n\n const rCode = `${R_CLIENT_IMPORT_AND_LOGIN}\n# Obtain a pointer and download the data\n${entityId} <- synGet(entity='${entityId}'${\n version ? `, version=${version}` : ''\n } ) `\n\n const pythonCode = `${PYTHON_CLIENT_IMPORT_AND_LOGIN}\n# Obtain a pointer and download the data\n${entityId} = syn.get(entity='${entityId}'${\n version ? `, version=${version}` : ''\n } )\n\n# Get the path to the local copy of the data file\nfilepath = ${entityId}.path`\n\n const cliCode = `synapse get ${entityId} ${\n version ? `--version ${version}` : ''\n }`\n\n return (\n <>\n <Tooltip\n title=\"Programmatic download options\"\n enterNextDelay={TOOLTIP_DELAY_SHOW}\n placement=\"left\"\n >\n <span>\n <button\n className={'btn-download-icon'}\n onClick={() => setIsShowingModal(true)}\n >\n <IconSvg icon=\"code\" />\n </button>\n </span>\n </Tooltip>\n {isShowingModal && (\n <ProgrammaticInstructionsModal\n show={true}\n onClose={() => setIsShowingModal(false)}\n title=\"Download Programmatically\"\n cliCode={cliCode}\n rCode={rCode}\n pythonCode={pythonCode}\n />\n )}\n </>\n )\n}\n\nexport default DirectProgrammaticDownload\n"],"mappings":";;;;;;;AAUA,IAAa,IAAiC,mGAKjC,IAA4B;AAIzC,SAAS,EAA2B,EAClC,aACA,cACkC;CAClC,IAAM,CAAC,GAAgB,KAAqB,EAAkB,EAAK,GAE7D,IAAQ,GAAG,EAA0B;;EAE3C,EAAS,qBAAqB,EAAS,GACrC,IAAU,aAAa,MAAY,GACpC,MAEK,IAAa,GAAG,EAA+B;;EAErD,EAAS,qBAAqB,EAAS,GACrC,IAAU,aAAa,MAAY,GACpC;;;aAGU,EAAS,QAEd,IAAU,eAAe,EAAS,GACtC,IAAU,aAAa,MAAY;CAGrC,OACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;EACE,OAAM;EACN,gBAAA;EACA,WAAU;YAEV,kBAAC,QAAD,EAAA,UACE,kBAAC,UAAD;GACE,WAAW;GACX,eAAe,EAAkB,EAAI;aAErC,kBAAC,GAAD,EAAS,MAAK,OAAQ,CAAA;EAChB,CAAA,EACJ,CAAA;CACC,CAAA,GACR,KACC,kBAAC,GAAD;EACE,MAAM;EACN,eAAe,EAAkB,EAAK;EACtC,OAAM;EACG;EACF;EACK;CACb,CAAA,CAEH,EAAA,CAAA;AAEN"}
@@ -1 +1 @@
1
- {"version":3,"file":"DownloadCartPage.js","names":[],"sources":["../../../src/components/DownloadCart/DownloadCartPage.tsx"],"sourcesContent":["import styles from './DownloadCartPage.module.scss'\nimport SynapseClient from '@/synapse-client'\nimport { useGetDownloadListStatistics } from '@/synapse-queries/download/useDownloadList'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { DeleteTwoTone } from '@mui/icons-material'\nimport { Button, Tooltip, Typography } from '@mui/material'\nimport {\n AvailableFilter,\n FilesStatisticsResponse,\n} from '@sage-bionetworks/synapse-types'\nimport { useEffect, useRef, useState } from 'react'\nimport { ErrorBanner } from '../error/ErrorBanner'\nimport FullWidthAlert from '../FullWidthAlert/FullWidthAlert'\nimport IconSvg from '../IconSvg/IconSvg'\nimport { ProgrammaticInstructionsModal } from '../ProgrammaticInstructionsModal/ProgrammaticInstructionsModal'\nimport AvailableForDownloadTable from './AvailableForDownloadTable'\nimport { CreatePackageV2 } from './CreatePackageV2'\nimport { PYTHON_CLIENT_IMPORT_AND_LOGIN } from './DirectProgrammaticDownload'\nimport { calculateFriendlyFileSize } from '@/utils/functions/calculateFriendlyFileSize'\nimport { DownloadIneligibleForPackagingFilesFromListButton } from './DownloadIneligibleForPackagingFilesFromListButton'\nimport {\n DownloadListActionsRequired,\n DownloadListActionsRequiredProps,\n} from './DownloadListActionsRequired'\nimport ComponentCollapse from '../ComponentCollapse'\n\nconst pythonDownloadCode = `${PYTHON_CLIENT_IMPORT_AND_LOGIN}\ndl_list_file_entities = syn.get_download_list()`\n\nconst cliDownloadCode = `synapse get-download-list`\n\nconst filterTabs: { label: string; filter: AvailableFilter }[] = [\n { label: 'All Files', filter: undefined },\n { label: 'Files included in ZIP', filter: 'eligibleForPackaging' },\n { label: 'Files not included in ZIP', filter: 'ineligibleForPackaging' },\n]\n\n/**\n * Show the Download Cart page.\n */\nexport function DownloadCartPage(props: DownloadListActionsRequiredProps) {\n const { accessToken } = useSynapseContext()\n const [selectedTabIndex, setSelectedTabIndex] = useState<number>(0)\n const [selectedFilterTabIndex, setSelectedFilterTabIndex] =\n useState<number>(0)\n const selectedFilter = filterTabs[selectedFilterTabIndex].filter\n const [isShowingCreatePackageUI, setIsShowingCreatePackageUI] =\n useState<boolean>(false)\n const createPackageRef = useRef<HTMLDivElement>(null)\n // scroll to the CreatePackageV2 component when it is shown so that the user is aware of the next steps after clicking the button to create a package\n useEffect(() => {\n if (isShowingCreatePackageUI) {\n createPackageRef.current?.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n })\n }\n }, [isShowingCreatePackageUI])\n const [isShowingModal, setIsShowingModal] = useState<boolean>(false)\n const [isShowingDownloadSuccessAlert, setIsShowingDownloadSuccessAlert] =\n useState(false)\n const [error, setError] = useState<Error>()\n const {\n data,\n isLoading,\n isError,\n error: newError,\n refetch,\n } = useGetDownloadListStatistics()\n useEffect(() => {\n if (isError && newError) {\n setError(newError)\n }\n }, [isError, newError])\n\n const getFilterCount = (\n data: FilesStatisticsResponse,\n filter: AvailableFilter,\n ) => {\n if (filter === undefined) return data.numberOfFilesAvailableForDownload\n if (filter === 'eligibleForPackaging')\n return data.numberOfFilesAvailableForDownloadAndEligibleForPackaging\n return (\n data.numberOfFilesAvailableForDownload -\n data.numberOfFilesAvailableForDownloadAndEligibleForPackaging\n )\n }\n // SWC-5874: When arriving at the download cart when there are no ARs, the user should start in the Download list\n useEffect(() => {\n if (data && data.numberOfFilesRequiringAction == 0) {\n setSelectedTabIndex(1)\n }\n // also hide the Create Package UI if there are no files available for download\n if (\n data &&\n data.numberOfFilesAvailableForDownloadAndEligibleForPackaging === 0\n ) {\n setIsShowingCreatePackageUI(false)\n }\n }, [data])\n\n if (error) {\n return <ErrorBanner error={error} />\n }\n const clearDownloadList = async () => {\n await SynapseClient.clearDownloadListV2(accessToken)\n refetch()\n }\n return (\n <div className={styles.DownloadCartPage}>\n <div>\n <div className={`${styles.pageHeader}`}>\n <div className=\"container\">\n <div className={styles.grid}>\n <h3 className=\"pageHeaderTitle\">Your Download List</h3>\n <Tooltip\n title=\"Immediately removes all items from your download list\"\n enterNextDelay={300}\n placement=\"right\"\n >\n <Button\n onClick={() => {\n clearDownloadList()\n }}\n variant=\"text\"\n color=\"primary\"\n startIcon={<DeleteTwoTone />}\n >\n Clear Your Download List\n </Button>\n </Tooltip>\n </div>\n </div>\n </div>\n </div>\n <div className={styles.tabsContainer}>\n <div className=\"container\">\n <ul className={styles.navTabs}>\n <li\n className={`${styles.navItem}${\n selectedTabIndex == 0 ? ` ${styles.active}` : ''\n }`}\n aria-selected={selectedTabIndex == 0}\n >\n <button onClick={() => setSelectedTabIndex(0)}>\n Access Actions Required\n {!isError && !isLoading && data && (\n <span className={styles.fileCount}>\n {data.totalNumberOfFiles -\n data.numberOfFilesAvailableForDownload}\n </span>\n )}\n </button>\n </li>\n <li\n className={`${styles.navItem}${\n selectedTabIndex == 1 ? ` ${styles.active}` : ''\n }`}\n aria-selected={selectedTabIndex == 1}\n >\n <button onClick={() => setSelectedTabIndex(1)}>\n Download List\n {!isError && !isLoading && data && (\n <span className={styles.fileCount}>\n {data.numberOfFilesAvailableForDownload}\n </span>\n )}\n </button>\n </li>\n </ul>\n </div>\n </div>\n\n <div\n className={\n /*\n The DownloadListActionsRequired component stores actions in local state to track which actions are completed.\n\n Mount the actions required component and hide it with style to ensure actions stored in component state are persisted as the user switches tabs\n */\n !(selectedTabIndex == 0 && !isError && !isLoading && data)\n ? styles.hidden\n : undefined\n }\n >\n {data?.numberOfFilesRequiringAction &&\n data.numberOfFilesRequiringAction > 0 && (\n // Unmount instead of hiding the DownloadListActionsRequired component when there are 0 actions required\n // The DownloadListActionsRequired cannot discern between a fulfilled action and an action that is no longer required because the\n // file was removed from the download cart.\n // In the typical case where the download cart is cleared, unmounting the component ensures that the actions are cleared out.\n <div>\n <div className=\"container\">\n <DownloadListActionsRequired {...props} />\n </div>\n </div>\n )}\n {data?.numberOfFilesRequiringAction === 0 && (\n <div className={styles.placeholder}>\n <div>No actions are currently required.</div>\n </div>\n )}\n </div>\n\n {selectedTabIndex == 1 && !isError && !isLoading && data && (\n <div>\n {data.numberOfFilesAvailableForDownload > 0 && (\n <div className={`container ${styles.DownloadListTabContent}`}>\n <h3 className={`${styles.sectionTitle} pageHeaderTitle`}>\n Bulk Download Options\n {data.sumOfFileSizesAvailableForDownload != null && (\n <Tooltip\n placement=\"right\"\n title={\n <>\n Total file size\n <br />\n Does not include files hosted outside Synapse\n </>\n }\n slotProps={{ tooltip: { sx: { maxWidth: 400 } } }}\n >\n <span className={styles.totalFileSize}>\n {calculateFriendlyFileSize(\n data.sumOfFileSizesAvailableForDownload,\n )}{' '}\n total*\n </span>\n </Tooltip>\n )}\n </h3>\n <div>\n <div className={styles.subSectionOverview}>\n <div className={styles.subSection}>\n <div className={styles.subSectionHeader}>\n <div className={styles.headline}>\n <Typography variant={'headline3'}>\n <IconSvg icon=\"packagableFile\" /> Web Download (.ZIP)\n </Typography>\n </div>\n <div className={styles.subSectionActions}>\n {data.numberOfFilesAvailableForDownloadAndEligibleForPackaging >\n 0 && (\n <Button\n variant=\"contained\"\n onClick={() => {\n setIsShowingCreatePackageUI(true)\n }}\n startIcon={<IconSvg icon=\"download\" wrap={false} />}\n >\n Download Packages\n </Button>\n )}\n {data.numberOfFilesAvailableForDownloadAndEligibleForPackaging ==\n 0 && (\n <Tooltip\n title=\"You cannot create a .zip package because there are no eligible files.\"\n enterNextDelay={300}\n placement=\"top\"\n >\n <span>\n <Button\n variant=\"contained\"\n disabled\n startIcon={\n <IconSvg icon=\"download\" wrap={false} />\n }\n >\n Download Packages\n </Button>\n </span>\n </Tooltip>\n )}\n </div>\n </div>\n <ComponentCollapse\n component={\n <Typography variant={'body1'} component={'div'}>\n Only some files may be eligible for packaging as ZIP.\n Use the Individual Downloads tab, below, to download\n non-packageable files.&nbsp;\n <a\n href=\"https://help.synapse.org/docs/Downloading-Data-From-the-Synapse-UI.2004254837.html\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n More Information.\n </a>\n </Typography>\n }\n collapseBoxSx={{\n backgroundColor: 'transparent',\n p: 0,\n mt: '15px',\n }}\n componentContainerSx={{\n backgroundColor: 'transparent',\n p: 0,\n }}\n iconSx={{ width: '25px', height: '25px' }}\n >\n <Typography\n variant={'body1'}\n component={'div'}\n sx={{ marginBottom: '15px' }}\n >\n <ul>\n <li>Files are bundled into .ZIPs up to 1 GB each.</li>\n <li>\n Larger selections are split into multiple packages.\n </li>\n <li>\n Includes only files stored in Synapse native\n storage.\n </li>\n <li>\n Each package contains a CSV manifest with file\n annotations and metadata.\n </li>\n </ul>\n </Typography>\n </ComponentCollapse>\n </div>\n <div className={styles.subSection}>\n <div className={styles.subSectionHeader}>\n <div className={styles.headline}>\n <Typography variant={'headline3'}>\n <IconSvg icon=\"code\" /> Programmatic Download\n </Typography>\n </div>\n <div className={styles.subSectionActions}>\n <Button\n variant=\"contained\"\n onClick={() => {\n setIsShowingModal(true)\n }}\n startIcon={<IconSvg icon=\"download\" wrap={false} />}\n >\n Get R / Python / CLI Code\n </Button>\n </div>\n </div>\n <ComponentCollapse\n component={\n <Typography variant={'body1'} component={'div'}>\n Use our Python, R, or command line clients to download\n files quickly.&nbsp;\n <a\n href=\"https://help.synapse.org/docs/Downloading-Data-Programmatically.2003796248.html\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n More Information.\n </a>\n </Typography>\n }\n collapseBoxSx={{\n backgroundColor: 'transparent',\n p: 0,\n mt: '15px',\n }}\n componentContainerSx={{\n backgroundColor: 'transparent',\n p: 0,\n }}\n iconSx={{ width: '25px', height: '25px' }}\n >\n <Typography\n variant={'body1'}\n component={'div'}\n sx={{ marginBottom: '15px' }}\n >\n <ul>\n <li>Requires a client (R, Python, or CLI).</li>\n <li>\n No limits on individual file size or total download\n size.\n </li>\n <li>\n Includes files stored both on and off Synapse native\n storage.\n </li>\n <li>\n Downloads include a CSV manifest with file\n annotations and metadata.\n </li>\n </ul>\n </Typography>\n </ComponentCollapse>\n </div>\n {data.numberOfFilesAvailableForDownloadAndEligibleForPackaging <\n data.numberOfFilesAvailableForDownload && (\n <div className={styles.subSection}>\n <div className={styles.subSectionHeader}>\n <div className={styles.headline}>\n <Typography variant={'headline3'}>\n <IconSvg icon=\"multiFile\" /> Multi-file Download\n </Typography>\n </div>\n <div className={styles.subSectionActions}>\n <div className={styles.ineligibleDownloadContainer}>\n <DownloadIneligibleForPackagingFilesFromListButton />\n </div>\n </div>\n </div>\n <ComponentCollapse\n component={\n <Typography variant={'body1'} component={'div'}>\n Files which <strong>aren't</strong> included in a\n ZIP package may be downloaded as a multi-file\n download.&nbsp;\n </Typography>\n }\n collapseBoxSx={{\n backgroundColor: 'transparent',\n p: 0,\n mt: '15px',\n }}\n componentContainerSx={{\n backgroundColor: 'transparent',\n p: 0,\n }}\n iconSx={{ width: '25px', height: '25px' }}\n >\n <Typography\n variant={'body1'}\n component={'div'}\n sx={{ marginBottom: '15px' }}\n >\n Clicking “Start Multi-file Download” initiates a\n download of all files in your Download List that can’t\n be bundled into a ZIP—such as large files or external\n links—in one step. Files are saved one by one with\n clear progress updates, automatic handling of\n duplicate names, and retry support if something fails.\n You can cancel anytime.\n <br />\n <br />\n Note: in some browsers, files download individually to\n your default Downloads folder instead of a selected\n location.\n </Typography>\n </ComponentCollapse>\n </div>\n )}\n </div>\n </div>\n\n <div>\n {isShowingCreatePackageUI && (\n <div ref={createPackageRef}>\n <CreatePackageV2\n onPackageCreation={() => {\n setIsShowingDownloadSuccessAlert(true)\n }}\n />\n </div>\n )}\n <h3 className={`${styles.sectionTitle} pageHeaderTitle`}>\n Download Individual Files\n </h3>\n <div className={styles.tabsContainer}>\n <ul className={styles.navTabs}>\n <li className={styles.navLabel}>View:</li>\n {filterTabs.map((tab, index) => (\n <li\n key={tab.label}\n className={`${styles.navItem}${\n selectedFilterTabIndex === index\n ? ` ${styles.active}`\n : ''\n }`}\n aria-selected={selectedFilterTabIndex === index}\n >\n <button\n onClick={() => setSelectedFilterTabIndex(index)}\n >\n {tab.label}\n {!isError && !isLoading && data && (\n <span className={styles.fileCount}>\n {getFilterCount(data, tab.filter)}\n </span>\n )}\n </button>\n </li>\n ))}\n </ul>\n </div>\n\n <div className={styles.availableForDownloadTableContainer}>\n <AvailableForDownloadTable\n key={selectedFilter ?? 'all'}\n filter={selectedFilter}\n />\n </div>\n </div>\n </div>\n )}\n {data.numberOfFilesAvailableForDownload === 0 && (\n <div className={styles.placeholder}>\n <Typography variant=\"body1Italic\">\n Your Download List is currently empty.\n </Typography>\n </div>\n )}\n </div>\n )}\n <FullWidthAlert\n show={isShowingDownloadSuccessAlert}\n variant=\"success\"\n title=\"Package Created\"\n description=\"A package has been created with eligible files. The items contained in this .zip file have been removed from your list. If your package is over 1GB, you will need to create multiple packages.\"\n autoCloseAfterDelayInSeconds={10}\n onClose={() => {\n setIsShowingDownloadSuccessAlert(false)\n }}\n />\n {isShowingModal && (\n <ProgrammaticInstructionsModal\n show={true}\n onClose={() => setIsShowingModal(false)}\n title=\"Download Programmatically\"\n pythonCode={pythonDownloadCode}\n cliCode={cliDownloadCode}\n // rCode={rDownloadCode}\n />\n )}\n </div>\n )\n}\n\nexport default DownloadCartPage\n"],"mappings":"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"}
1
+ {"version":3,"file":"DownloadCartPage.js","names":[],"sources":["../../../src/components/DownloadCart/DownloadCartPage.tsx"],"sourcesContent":["import styles from './DownloadCartPage.module.scss'\nimport SynapseClient from '@/synapse-client'\nimport { useGetDownloadListStatistics } from '@/synapse-queries/download/useDownloadList'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { DeleteTwoTone } from '@mui/icons-material'\nimport { Button, Tooltip, Typography } from '@mui/material'\nimport {\n AvailableFilter,\n FilesStatisticsResponse,\n} from '@sage-bionetworks/synapse-types'\nimport { useEffect, useRef, useState } from 'react'\nimport { ErrorBanner } from '../error/ErrorBanner'\nimport FullWidthAlert from '../FullWidthAlert/FullWidthAlert'\nimport IconSvg from '../IconSvg/IconSvg'\nimport { ProgrammaticInstructionsModal } from '../ProgrammaticInstructionsModal/ProgrammaticInstructionsModal'\nimport AvailableForDownloadTable from './AvailableForDownloadTable'\nimport { CreatePackageV2 } from './CreatePackageV2'\nimport { PYTHON_CLIENT_IMPORT_AND_LOGIN } from './DirectProgrammaticDownload'\nimport { calculateFriendlyFileSize } from '@/utils/functions/calculateFriendlyFileSize'\nimport { DownloadIneligibleForPackagingFilesFromListButton } from './DownloadIneligibleForPackagingFilesFromListButton'\nimport {\n DownloadListActionsRequired,\n DownloadListActionsRequiredProps,\n} from './DownloadListActionsRequired'\nimport ComponentCollapse from '../ComponentCollapse'\n\nconst pythonDownloadCode = `${PYTHON_CLIENT_IMPORT_AND_LOGIN}\ndl_list_file_entities = syn.get_download_list()`\n\nconst cliDownloadCode = `synapse get-download-list`\n\nconst filterTabs: { label: string; filter: AvailableFilter }[] = [\n { label: 'All Files', filter: undefined },\n { label: 'Files included in ZIP', filter: 'eligibleForPackaging' },\n { label: 'Files not included in ZIP', filter: 'ineligibleForPackaging' },\n]\n\n/**\n * Show the Download Cart page.\n */\nexport function DownloadCartPage(props: DownloadListActionsRequiredProps) {\n const { accessToken } = useSynapseContext()\n const [selectedTabIndex, setSelectedTabIndex] = useState<number>(0)\n const [selectedFilterTabIndex, setSelectedFilterTabIndex] =\n useState<number>(0)\n const selectedFilter = filterTabs[selectedFilterTabIndex].filter\n const [isShowingCreatePackageUI, setIsShowingCreatePackageUI] =\n useState<boolean>(false)\n const createPackageRef = useRef<HTMLDivElement>(null)\n // scroll to the CreatePackageV2 component when it is shown so that the user is aware of the next steps after clicking the button to create a package\n useEffect(() => {\n if (isShowingCreatePackageUI) {\n createPackageRef.current?.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n })\n }\n }, [isShowingCreatePackageUI])\n const [isShowingModal, setIsShowingModal] = useState<boolean>(false)\n const [isShowingDownloadSuccessAlert, setIsShowingDownloadSuccessAlert] =\n useState(false)\n const [error, setError] = useState<Error>()\n const {\n data,\n isLoading,\n isError,\n error: newError,\n refetch,\n } = useGetDownloadListStatistics()\n useEffect(() => {\n if (isError && newError) {\n setError(newError)\n }\n }, [isError, newError])\n\n const getFilterCount = (\n data: FilesStatisticsResponse,\n filter: AvailableFilter,\n ) => {\n if (filter === undefined) return data.numberOfFilesAvailableForDownload\n if (filter === 'eligibleForPackaging')\n return data.numberOfFilesAvailableForDownloadAndEligibleForPackaging\n return (\n data.numberOfFilesAvailableForDownload -\n data.numberOfFilesAvailableForDownloadAndEligibleForPackaging\n )\n }\n // SWC-5874: When arriving at the download cart when there are no ARs, the user should start in the Download list\n useEffect(() => {\n if (data && data.numberOfFilesRequiringAction == 0) {\n setSelectedTabIndex(1)\n }\n // also hide the Create Package UI if there are no files available for download\n if (\n data &&\n data.numberOfFilesAvailableForDownloadAndEligibleForPackaging === 0\n ) {\n setIsShowingCreatePackageUI(false)\n }\n }, [data])\n\n if (error) {\n return <ErrorBanner error={error} />\n }\n const clearDownloadList = async () => {\n await SynapseClient.clearDownloadListV2(accessToken)\n refetch()\n }\n return (\n <div className={styles.DownloadCartPage}>\n <div>\n <div className={`${styles.pageHeader}`}>\n <div className=\"container\">\n <div className={styles.grid}>\n <h3 className=\"pageHeaderTitle\">Your Download List</h3>\n <Tooltip\n title=\"Immediately removes all items from your download list\"\n enterNextDelay={300}\n placement=\"right\"\n >\n <Button\n onClick={() => {\n clearDownloadList()\n }}\n variant=\"text\"\n color=\"primary\"\n startIcon={<DeleteTwoTone />}\n >\n Clear Your Download List\n </Button>\n </Tooltip>\n </div>\n </div>\n </div>\n </div>\n <div className={styles.tabsContainer}>\n <div className=\"container\">\n <ul className={styles.navTabs}>\n <li\n className={`${styles.navItem}${\n selectedTabIndex == 0 ? ` ${styles.active}` : ''\n }`}\n aria-selected={selectedTabIndex == 0}\n >\n <button onClick={() => setSelectedTabIndex(0)}>\n Access Actions Required\n {!isError && !isLoading && data && (\n <span className={styles.fileCount}>\n {data.totalNumberOfFiles -\n data.numberOfFilesAvailableForDownload}\n </span>\n )}\n </button>\n </li>\n <li\n className={`${styles.navItem}${\n selectedTabIndex == 1 ? ` ${styles.active}` : ''\n }`}\n aria-selected={selectedTabIndex == 1}\n >\n <button onClick={() => setSelectedTabIndex(1)}>\n Download List\n {!isError && !isLoading && data && (\n <span className={styles.fileCount}>\n {data.numberOfFilesAvailableForDownload}\n </span>\n )}\n </button>\n </li>\n </ul>\n </div>\n </div>\n\n <div\n className={\n /*\n The DownloadListActionsRequired component stores actions in local state to track which actions are completed.\n\n Mount the actions required component and hide it with style to ensure actions stored in component state are persisted as the user switches tabs\n */\n !(selectedTabIndex == 0 && !isError && !isLoading && data)\n ? styles.hidden\n : undefined\n }\n >\n {data?.numberOfFilesRequiringAction &&\n data.numberOfFilesRequiringAction > 0 && (\n // Unmount instead of hiding the DownloadListActionsRequired component when there are 0 actions required\n // The DownloadListActionsRequired cannot discern between a fulfilled action and an action that is no longer required because the\n // file was removed from the download cart.\n // In the typical case where the download cart is cleared, unmounting the component ensures that the actions are cleared out.\n <div>\n <div className=\"container\">\n <DownloadListActionsRequired {...props} />\n </div>\n </div>\n )}\n {data?.numberOfFilesRequiringAction === 0 && (\n <div className={styles.placeholder}>\n <div>No actions are currently required.</div>\n </div>\n )}\n </div>\n\n {selectedTabIndex == 1 && !isError && !isLoading && data && (\n <div>\n {data.numberOfFilesAvailableForDownload > 0 && (\n <div className={`container ${styles.DownloadListTabContent}`}>\n <h3 className={`${styles.sectionTitle} pageHeaderTitle`}>\n Bulk Download Options\n {data.sumOfFileSizesAvailableForDownload != null && (\n <Tooltip\n placement=\"right\"\n title={\n <>\n Total file size\n <br />\n Does not include files hosted outside Synapse\n </>\n }\n slotProps={{ tooltip: { sx: { maxWidth: 400 } } }}\n >\n <span className={styles.totalFileSize}>\n {calculateFriendlyFileSize(\n data.sumOfFileSizesAvailableForDownload,\n )}{' '}\n total*\n </span>\n </Tooltip>\n )}\n </h3>\n <div>\n <div className={styles.subSectionOverview}>\n <div className={styles.subSection}>\n <div className={styles.subSectionHeader}>\n <div className={styles.headline}>\n <Typography variant={'headline3'}>\n <IconSvg icon=\"packagableFile\" /> Web Download (.ZIP)\n </Typography>\n </div>\n <div className={styles.subSectionActions}>\n {data.numberOfFilesAvailableForDownloadAndEligibleForPackaging >\n 0 && (\n <Button\n variant=\"contained\"\n onClick={() => {\n setIsShowingCreatePackageUI(true)\n }}\n startIcon={<IconSvg icon=\"download\" wrap={false} />}\n >\n Download Packages\n </Button>\n )}\n {data.numberOfFilesAvailableForDownloadAndEligibleForPackaging ==\n 0 && (\n <Tooltip\n title=\"You cannot create a .zip package because there are no eligible files.\"\n enterNextDelay={300}\n placement=\"top\"\n >\n <span>\n <Button\n variant=\"contained\"\n disabled\n startIcon={\n <IconSvg icon=\"download\" wrap={false} />\n }\n >\n Download Packages\n </Button>\n </span>\n </Tooltip>\n )}\n </div>\n </div>\n <ComponentCollapse\n component={\n <Typography variant={'body1'} component={'div'}>\n Only some files may be eligible for packaging as ZIP.\n Use the Individual Downloads tab, below, to download\n non-packageable files.&nbsp;\n <a\n href=\"https://help.synapse.org/docs/Downloading-Data-From-the-Synapse-UI.2004254837.html\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n More Information.\n </a>\n </Typography>\n }\n collapseBoxSx={{\n backgroundColor: 'transparent',\n p: 0,\n mt: '15px',\n }}\n componentContainerSx={{\n backgroundColor: 'transparent',\n p: 0,\n }}\n iconSx={{ width: '25px', height: '25px' }}\n >\n <Typography\n variant={'body1'}\n component={'div'}\n sx={{ marginBottom: '15px' }}\n >\n <ul>\n <li>Files are bundled into .ZIPs up to 1 GB each.</li>\n <li>\n Larger selections are split into multiple packages.\n </li>\n <li>\n Includes only files stored in Synapse native\n storage.\n </li>\n <li>\n Each package contains a CSV manifest with file\n annotations and metadata.\n </li>\n </ul>\n </Typography>\n </ComponentCollapse>\n </div>\n <div className={styles.subSection}>\n <div className={styles.subSectionHeader}>\n <div className={styles.headline}>\n <Typography variant={'headline3'}>\n <IconSvg icon=\"code\" /> Programmatic Download\n </Typography>\n </div>\n <div className={styles.subSectionActions}>\n <Button\n variant=\"contained\"\n onClick={() => {\n setIsShowingModal(true)\n }}\n startIcon={<IconSvg icon=\"download\" wrap={false} />}\n >\n Get R / Python / CLI Code\n </Button>\n </div>\n </div>\n <ComponentCollapse\n component={\n <Typography variant={'body1'} component={'div'}>\n Use our Python, R, or command line clients to download\n files quickly.&nbsp;\n <a\n href=\"https://help.synapse.org/docs/Downloading-Data-Programmatically.2003796248.html\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n More Information.\n </a>\n </Typography>\n }\n collapseBoxSx={{\n backgroundColor: 'transparent',\n p: 0,\n mt: '15px',\n }}\n componentContainerSx={{\n backgroundColor: 'transparent',\n p: 0,\n }}\n iconSx={{ width: '25px', height: '25px' }}\n >\n <Typography\n variant={'body1'}\n component={'div'}\n sx={{ marginBottom: '15px' }}\n >\n <ul>\n <li>Requires a client (R, Python, or CLI).</li>\n <li>\n No limits on individual file size or total download\n size.\n </li>\n <li>\n Includes files stored both on and off Synapse native\n storage.\n </li>\n <li>\n Downloads include a CSV manifest with file\n annotations and metadata.\n </li>\n </ul>\n </Typography>\n </ComponentCollapse>\n </div>\n {data.numberOfFilesAvailableForDownloadAndEligibleForPackaging <\n data.numberOfFilesAvailableForDownload && (\n <div className={styles.subSection}>\n <div className={styles.subSectionHeader}>\n <div className={styles.headline}>\n <Typography variant={'headline3'}>\n <IconSvg icon=\"multiFile\" /> Multi-file Download\n </Typography>\n </div>\n <div className={styles.subSectionActions}>\n <div className={styles.ineligibleDownloadContainer}>\n <DownloadIneligibleForPackagingFilesFromListButton />\n </div>\n </div>\n </div>\n <ComponentCollapse\n component={\n <Typography variant={'body1'} component={'div'}>\n Files which <strong>aren't</strong> included in a\n ZIP package may be downloaded as a multi-file\n download.&nbsp;\n </Typography>\n }\n collapseBoxSx={{\n backgroundColor: 'transparent',\n p: 0,\n mt: '15px',\n }}\n componentContainerSx={{\n backgroundColor: 'transparent',\n p: 0,\n }}\n iconSx={{ width: '25px', height: '25px' }}\n >\n <Typography\n variant={'body1'}\n component={'div'}\n sx={{ marginBottom: '15px' }}\n >\n Clicking “Start Multi-file Download” initiates a\n download of all files in your Download List that can’t\n be bundled into a ZIP—such as large files or external\n links—in one step. Files are saved one by one with\n clear progress updates, automatic handling of\n duplicate names, and retry support if something fails.\n You can cancel anytime.\n <br />\n <br />\n Note: in some browsers, files download individually to\n your default Downloads folder instead of a selected\n location.\n </Typography>\n </ComponentCollapse>\n </div>\n )}\n </div>\n </div>\n\n <div>\n {isShowingCreatePackageUI && (\n <div ref={createPackageRef}>\n <CreatePackageV2\n onPackageCreation={() => {\n setIsShowingDownloadSuccessAlert(true)\n }}\n />\n </div>\n )}\n <h3 className={`${styles.sectionTitle} pageHeaderTitle`}>\n Download Individual Files\n </h3>\n <div className={styles.tabsContainer}>\n <ul className={styles.navTabs}>\n <li className={styles.navLabel}>View:</li>\n {filterTabs.map((tab, index) => (\n <li\n key={tab.label}\n className={`${styles.navItem}${\n selectedFilterTabIndex === index\n ? ` ${styles.active}`\n : ''\n }`}\n aria-selected={selectedFilterTabIndex === index}\n >\n <button\n onClick={() => setSelectedFilterTabIndex(index)}\n >\n {tab.label}\n {!isError && !isLoading && data && (\n <span className={styles.fileCount}>\n {getFilterCount(data, tab.filter)}\n </span>\n )}\n </button>\n </li>\n ))}\n </ul>\n </div>\n\n <div className={styles.availableForDownloadTableContainer}>\n <AvailableForDownloadTable\n key={selectedFilter ?? 'all'}\n filter={selectedFilter}\n />\n </div>\n </div>\n </div>\n )}\n {data.numberOfFilesAvailableForDownload === 0 && (\n <div className={styles.placeholder}>\n <Typography variant=\"body1Italic\">\n Your Download List is currently empty.\n </Typography>\n </div>\n )}\n </div>\n )}\n <FullWidthAlert\n show={isShowingDownloadSuccessAlert}\n variant=\"success\"\n title=\"Package Created\"\n description=\"A package has been created with eligible files. The items contained in this .zip file have been removed from your list. If your package is over 1GB, you will need to create multiple packages.\"\n autoCloseAfterDelayInSeconds={10}\n onClose={() => {\n setIsShowingDownloadSuccessAlert(false)\n }}\n />\n {isShowingModal && (\n <ProgrammaticInstructionsModal\n show={true}\n onClose={() => setIsShowingModal(false)}\n title=\"Download Programmatically\"\n pythonCode={pythonDownloadCode}\n cliCode={cliDownloadCode}\n // rCode={rDownloadCode}\n />\n )}\n </div>\n )\n}\n\nexport default DownloadCartPage\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DownloadDetails.js","names":[],"sources":["../../../src/components/DownloadCart/DownloadDetails.tsx"],"sourcesContent":["import { calculateFriendlyFileSize } from '@/utils/functions/calculateFriendlyFileSize'\nimport { Box, Tooltip } from '@mui/material'\nimport pluralize from 'pluralize'\nimport IconSvg from '../IconSvg/IconSvg'\nimport { TOOLTIP_DELAY_SHOW } from '../SynapseTable/SynapseTableConstants'\n\nexport type DownloadDetailsProps = {\n numFiles: number\n numPackagableFiles: number\n numBytes: number\n}\n\nexport default function DownloadDetails(props: DownloadDetailsProps) {\n const { numFiles, numPackagableFiles, numBytes } = props\n const numIneligibleFiles = numFiles - numPackagableFiles\n const isInactive = numFiles === 0\n const iconClassName = isInactive ? 'SRC-inactive' : 'SRC-primary-text-color'\n return (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'start ',\n gap: '25px',\n fontWeight: 'bold',\n svg: {\n mr: '5px',\n },\n }}\n >\n <span>\n {!isInactive && (\n <>\n {numFiles.toLocaleString()} {pluralize('File', numFiles)}\n </>\n )}\n </span>\n <span>\n <span className={iconClassName}>\n <IconSvg wrap={false} icon=\"packagableFile\" />\n </span>\n {!isInactive && (\n <>\n {numPackagableFiles.toLocaleString()}{' '}\n {pluralize('File', numPackagableFiles)} eligible for packaging\n </>\n )}\n </span>\n {numBytes > 0 && (\n <Tooltip\n title=\"This is the total size of all files in the Download List that are available to download.\"\n enterNextDelay={TOOLTIP_DELAY_SHOW}\n placement=\"top\"\n >\n <span className=\"item\">{calculateFriendlyFileSize(numBytes)}</span>\n </Tooltip>\n )}\n {numIneligibleFiles > 0 && (\n <span className=\"item\">\n <span className={`SRC-warning-color`}>\n <IconSvg icon=\"warningOutlined\" />\n </span>\n {!isInactive && (\n <>\n {numIneligibleFiles.toLocaleString()}{' '}\n {pluralize('File', numIneligibleFiles)} ineligible for packaging\n </>\n )}\n </span>\n )}\n </Box>\n )\n}\n"],"mappings":";;;;;;;AAYA,SAAwB,EAAgB,GAA6B;CACnE,IAAM,EAAE,aAAU,uBAAoB,gBAAa,GAC7C,IAAqB,IAAW,GAChC,IAAa,MAAa,GAC1B,IAAgB,IAAa,iBAAiB;AACpD,QACE,kBAAC,GAAD;EACE,IAAI;GACF,SAAS;GACT,YAAY;GACZ,gBAAgB;GAChB,KAAK;GACL,YAAY;GACZ,KAAK,EACH,IAAI,OACL;GACF;YAVH;GAYE,kBAAC,QAAD,EAAA,UACG,CAAC,KACA,kBAAA,GAAA,EAAA,UAAA;IACG,EAAS,gBAAgB;IAAC;IAAE,EAAU,QAAQ,EAAS;IACvD,EAAA,CAAA,EAEA,CAAA;GACP,kBAAC,QAAD,EAAA,UAAA,CACE,kBAAC,QAAD;IAAM,WAAW;cACf,kBAAC,GAAD;KAAS,MAAM;KAAO,MAAK;KAAmB,CAAA;IACzC,CAAA,EACN,CAAC,KACA,kBAAA,GAAA,EAAA,UAAA;IACG,EAAmB,gBAAgB;IAAE;IACrC,EAAU,QAAQ,EAAmB;IAAC;IACtC,EAAA,CAAA,CAEA,EAAA,CAAA;GACN,IAAW,KACV,kBAAC,GAAD;IACE,OAAM;IACN,gBAAA;IACA,WAAU;cAEV,kBAAC,QAAD;KAAM,WAAU;eAAQ,EAA0B,EAAS;KAAQ,CAAA;IAC3D,CAAA;GAEX,IAAqB,KACpB,kBAAC,QAAD;IAAM,WAAU;cAAhB,CACE,kBAAC,QAAD;KAAM,WAAW;eACf,kBAAC,GAAD,EAAS,MAAK,mBAAoB,CAAA;KAC7B,CAAA,EACN,CAAC,KACA,kBAAA,GAAA,EAAA,UAAA;KACG,EAAmB,gBAAgB;KAAE;KACrC,EAAU,QAAQ,EAAmB;KAAC;KACtC,EAAA,CAAA,CAEA;;GAEL"}
1
+ {"version":3,"file":"DownloadDetails.js","names":[],"sources":["../../../src/components/DownloadCart/DownloadDetails.tsx"],"sourcesContent":["import { calculateFriendlyFileSize } from '@/utils/functions/calculateFriendlyFileSize'\nimport { Box, Tooltip } from '@mui/material'\nimport pluralize from 'pluralize'\nimport IconSvg from '../IconSvg/IconSvg'\nimport { TOOLTIP_DELAY_SHOW } from '../SynapseTable/SynapseTableConstants'\n\nexport type DownloadDetailsProps = {\n numFiles: number\n numPackagableFiles: number\n numBytes: number\n}\n\nexport default function DownloadDetails(props: DownloadDetailsProps) {\n const { numFiles, numPackagableFiles, numBytes } = props\n const numIneligibleFiles = numFiles - numPackagableFiles\n const isInactive = numFiles === 0\n const iconClassName = isInactive ? 'SRC-inactive' : 'SRC-primary-text-color'\n return (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'start ',\n gap: '25px',\n fontWeight: 'bold',\n svg: {\n mr: '5px',\n },\n }}\n >\n <span>\n {!isInactive && (\n <>\n {numFiles.toLocaleString()} {pluralize('File', numFiles)}\n </>\n )}\n </span>\n <span>\n <span className={iconClassName}>\n <IconSvg wrap={false} icon=\"packagableFile\" />\n </span>\n {!isInactive && (\n <>\n {numPackagableFiles.toLocaleString()}{' '}\n {pluralize('File', numPackagableFiles)} eligible for packaging\n </>\n )}\n </span>\n {numBytes > 0 && (\n <Tooltip\n title=\"This is the total size of all files in the Download List that are available to download.\"\n enterNextDelay={TOOLTIP_DELAY_SHOW}\n placement=\"top\"\n >\n <span className=\"item\">{calculateFriendlyFileSize(numBytes)}</span>\n </Tooltip>\n )}\n {numIneligibleFiles > 0 && (\n <span className=\"item\">\n <span className={`SRC-warning-color`}>\n <IconSvg icon=\"warningOutlined\" />\n </span>\n {!isInactive && (\n <>\n {numIneligibleFiles.toLocaleString()}{' '}\n {pluralize('File', numIneligibleFiles)} ineligible for packaging\n </>\n )}\n </span>\n )}\n </Box>\n )\n}\n"],"mappings":";;;;;;;AAYA,SAAwB,EAAgB,GAA6B;CACnE,IAAM,EAAE,aAAU,uBAAoB,gBAAa,GAC7C,IAAqB,IAAW,GAChC,IAAa,MAAa,GAC1B,IAAgB,IAAa,iBAAiB;CACpD,OACE,kBAAC,GAAD;EACE,IAAI;GACF,SAAS;GACT,YAAY;GACZ,gBAAgB;GAChB,KAAK;GACL,YAAY;GACZ,KAAK,EACH,IAAI,MACN;EACF;YAVF;GAYE,kBAAC,QAAD,EAAA,UACG,CAAC,KACA,kBAAA,GAAA,EAAA,UAAA;IACG,EAAS,eAAe;IAAE;IAAE,EAAU,QAAQ,CAAQ;GACvD,EAAA,CAAA,EAEA,CAAA;GACN,kBAAC,QAAD,EAAA,UAAA,CACE,kBAAC,QAAD;IAAM,WAAW;cACf,kBAAC,GAAD;KAAS,MAAM;KAAO,MAAK;IAAkB,CAAA;GACzC,CAAA,GACL,CAAC,KACA,kBAAA,GAAA,EAAA,UAAA;IACG,EAAmB,eAAe;IAAG;IACrC,EAAU,QAAQ,CAAkB;IAAE;GACvC,EAAA,CAAA,CAEA,EAAA,CAAA;GACL,IAAW,KACV,kBAAC,GAAD;IACE,OAAM;IACN,gBAAA;IACA,WAAU;cAEV,kBAAC,QAAD;KAAM,WAAU;eAAQ,EAA0B,CAAQ;IAAQ,CAAA;GAC3D,CAAA;GAEV,IAAqB,KACpB,kBAAC,QAAD;IAAM,WAAU;cAAhB,CACE,kBAAC,QAAD;KAAM,WAAW;eACf,kBAAC,GAAD,EAAS,MAAK,kBAAmB,CAAA;IAC7B,CAAA,GACL,CAAC,KACA,kBAAA,GAAA,EAAA,UAAA;KACG,EAAmB,eAAe;KAAG;KACrC,EAAU,QAAQ,CAAkB;KAAE;IACvC,EAAA,CAAA,CAEA;;EAEL;;AAET"}